AndroidネイティブなビューをFlutterに埋め込むために
ENECHANGE株式会社 EV充電サービス事業部 テックリードの小林友樹氏が登壇。同社の提供する「EV充電エネチェンジ」では、充電器が設置されている場所をマップ上で探すことが可能。この機能を実現するために、GoogleマップのWidgetを提供するFlutterプラグインのgoogle_maps_flutterを採用している。
このプラグインではネイティブアプリのビューをFlutterに埋め込む設計になっており、これはPlatform Viewsと呼ばれている。Platform ViewsをAndroidで実現する場合、実装(=表示モード)が3種類提供されている。なぜなら、それぞれの実装方式にパフォーマンスとネイティブ機能の忠実度などのトレードオフがあり、状況に応じて適切なものを選択する必要があるためだ。一方、iOSの場合は最適解の実装方法が提供されているため選択は不要である。
本セッションでは、ネイティブビューをAndroidのVirtual Displayに描画し、それをFlutterのTextureに接続する「Virtual Display」とAndroidビュー階層のなかに直接ネイティブビューを配置する「Hybrid Composition」、そして「Virtual Display」と「Hybrid Composition」の問題を解消すべくFlutter 3で導入された方式「Texture Layer」の解説が行われた。また、小林氏が開発を進めるうえで直面した課題やその対策・回避策についても語られた。