Android アプリに Flutter View を追加する
経由で統合するFlutterView以前の FlutterActivity および FlutterFragment を使用した場合よりも少し多くの作業が必要です 説明された。
基本的に、Dart 側の Flutter フレームワークはさまざまなアクセスを必要とします。 アクティビティレベルのイベントとライフサイクルが機能するようになります。 FlutterView 以来 ( ですandroid.view.View) 開発者のアプリケーションが所有する任意のアクティビティに追加できます FlutterView はアクティビティ レベルのイベントにアクセスできないため、 開発者はそれらの接続を手動でブリッジする必要があります flutterエンジン。
アプリケーションのアクティビティのイベントを FlutterView にフィードする方法を選択する方法 アプリケーションに固有のものになります。
サンプル
FlutterActivity および FlutterFragment のガイドとは異なり、FlutterView 統合は、サンプル プロジェクトを使用してより適切にデモンストレーションできます。
サンプルプロジェクトは次の場所にありますhttps://github.com/flutter/samples/tree/main/add_to_app/android_viewFlutterView が使用される単純な FlutterView 統合を文書化します。 上のGIFに見られるように、カードのRecycleViewリストの一部のセルについてです。
一般的方法
FlutterView レベルの統合の一般的な要点は、再作成する必要があるということです。 アクティビティ間のさまざまな相互作用、FlutterViewそしてその flutterエンジンに存在するFlutterActivityAndFragmentDelegate独自のアプリケーションのコード内で。で作られたつながりFlutterActivityAndFragmentDelegateを使用すると自動的に行われますFlutterアクティビティまたは flutterフラグメント、 しかしそれ以来FlutterViewこの場合、アプリケーション内のアクティビティまたはフラグメントに追加されます。 接続を手動で再作成する必要があります。それ以外の場合は、FlutterView何もレンダリングしないか、その他の欠落している機能がありません。
サンプルFlutterViewエンジンクラスは、アプリケーション固有のそのような可能な実装の 1 つを示しています。 アクティビティ間の接続、FlutterViewそして flutterエンジン。
実装するAPI
Flutter が何かを描画するために必要な絶対最小限の実装 それは:
- 電話FlutterEngine にアタッチいつFlutterView再開されたアクティビティのビュー階層に追加され、表示されます。と
- 電話アプリが再開されましたで flutterエンジンの
lifecycleChannel
アクティビティがホストしているときのフィールドFlutterViewが見える。
その逆FlutterEngine から切り離すおよびその他のライフサイクル メソッドライフサイクルチャネルFlutterView または Activity の実行時にリソースがリークしないように、クラスも呼び出す必要があります。 はもう見えません。
さらに、残りの実装については、FlutterViewエンジンデモクラスまたはFlutterActivityAndFragmentDelegateクリップボード、システムなどの他の機能が正しく機能することを確認するため UIオーバーレイ、プラグインなど