問題タブ [home-screen-widget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
351 参照

ios - iOS の Flutter ホーム ウィジェット - MissingPluginException (チャンネル home_widget のメソッド registerBackgroundCallback の実装が見つかりません)

Android と iOS で動作する天気アプリがあります。Android バージョンには、Home_widget および WorkManager プラグインを使用してバックグラウンドで更新するホーム画面ウィジェットがあり、iOS でも同じものを実装しようとしています。私は確かに専門家ではありませんが、ワーク マネージャーのコールバック プロセスが iOS で開始されると、dart アイソレートが作成されることを理解しています。これは、フラッターのメイン プロセスに登録されたプラグインが利用できないことを意味し、WorkmanagerPlugin の setPluginRegistrantCallback 関数を使用して、必要なプラグインをアイソレートに登録する必要があります。

ここに私の AppDelegate クラスがあります:

GeneratedPluginRegistrant.register(with: registry) はすべてのプラグインを登録する必要があり、登録します。

ただし、http プラグイン ( https://pub.dev/packages/http ) が必要ですが、メイン プロセスに登録されていないため、isolate に登録されません。次のようなものを使用して特定のプラグインを登録できることは知っていますが、http プラグインの完全なパッケージ名や、これが機能するかどうかはわかりません。

HomeWidgetPlugin.register(with: registry.registrar(forPlugin: "es.antonborri.home_widget.HomeWidgetPlugin") as! FlutterPluginRegistrar)

これは私の GeneratedPluginRegistrant.java で、http プラグインが登録されていないことを示しています。

長いリードアップですが、私の質問は、アイソレートでどのように http を使用するのですか?

(これにはいくつかの背景があります。次のエラーが表示されます:

Unhandled Exception: MissingPluginException(No implementation found for method registerBackgroundCallback on channel home_widget)

コードをステップ実行すると、API から http プラグインを使用してデータを取得しようとした行で、この例外が発生します。したがって、多くの掘り下げと読み取りを通じて、httpがIsolateに登録されていないことが原因だと思いますが、間違っている可能性があります?!)