1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

path_providerをAndroidで利用するとエラーが発生してしまう

Last updated at Posted at 2020-11-08

Flutterにおけるストレージのパス取得のためのプラグインpath_providerがAndroidで動作しない問題でハマったので解決策をメモしておきます。

事象

path_providerプラグインgetTemporaryDirectory()などのメソッドをAndroidで実行すると、以下の例外が発生していました。

MissingPluginException(No implementation found for method getTemporaryDirectory on channel plugins.flutter.io/path_provider)

解決策

該当プロジェクトでは、ネイティブのUIをそのまま組み込むことができるPlatformViewを利用していますが、AndroidのネイティブコードにおけるPlatformViewを登録する場所で、overrideしたメソッドの親メソッドを呼び出していないことが原因でした。

MainActivity.kt
class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        // 以下1行を記述していなかった
        super.configureFlutterEngine(flutterEngine)

        flutterEngine
                .platformViewsController
                .registry
                .registerViewFactory("<platform-view-type>", NativeViewFactory())
    }
}

補足

公式のPlatformViewのサンプルには、superメソッドの呼び出しが記述されていないので、そのままコピペすると発生してしまいます。

詳しい原因は調べられていないですが、親メソッドの呼び出しがスキップされることで、プラグインで利用するネイティブ側のメソッド登録が実行されないために、事象が発生してしまうと考えられます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?