はじめに
Flutter開発してると、MethodChannelを使ってプラットフォーム固有の機能を使いたいことがままある。
AndroidだとMethodChannel経由でActivityにアクセスするんだけども、アクセス先のActivityがデフォルトだとFlutterActivityになっていて、ComponentActivityを継承していない。
これだと、activity-ktxのviewModels
が使えなくて、DIするときにとても困ってしまう。
ViewModelFactoryを作ったりして頑張ればなんとかなったのだろうけど、僕にそんな技術力はないので別の方法を探したら、いい感じに解決できた。
あんまり記事とかもなかったので共有。
結論
ドキュメントを見てくれればわかるけど、この子はしっかりandroidx.core.app.ComponentActivity
を継承してくれているので、FlutterActivityをFlutterFragmentActivityに差し替えてくれれば、ちゃんとviewModels
も使えるようになる。
MethodChannelで繋ぐActivityを全てFlutterFragmentActivityにするのではなくて、必要に応じて使うのがいいっぽいね。
まとめ
- MethodChannelで繋いだActivityでComponentActivityでしか使えない機能がある場合は、FlutterFragmentActivityを使おう。
おわり。