Flutter: Macのデスクトップアプリで、path_providerのメソッドが使えない
結論:「path_provider_macos」をインポートして、「getApplicationDocumentsPath」を呼び出す
2022/3/2 Flutter エラー・バグ日記
Android/iOSでリリース済のアプリを、Macのデスクトップアプリとしてビルドすると、「path_provider」のメソッドである「getApplicationDocumentsDirectory」が下記エラーで使えない。
Unhandled Exception: MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)
使っている「path_provider」のバージョンは^2.0.4で、最新ではないものの、下記パッケージのページを見るとMACOS対応になっている。
Flutterデスクトップアプリの下記公式チュートリアルページに従い、「entitlements」ファイルの権限設定もちゃんとしている。
なぜだろう。。。
「path_provider」のソースコードを見ても分からず、ネットにも情報が見つからない。
ふと、下記パッケージのページ右側の「Dependencies」のところに「path_provider_macos」というmac用のパッケージがあることに気づく。
恐らく「path_provider」を入れれば付随してくるパッケージだと思うが、「path_provider_macos」のExampleページを覗くと、「getApplicationDocumentsPath」というパス取得メソッドを使うコード例が掲載されていた。
そこで、「path_provider_macos」パッケージをインポートして、ソースコードを見てみると、「PathProviderMacOS」クラスのインスタンスを作れば、「getApplicationDocumentsPath」を呼び出せそうだと分かったので、やってみると無事、エラーを解消できた。
パス取得のメソッドは複数用意されているが、「getApplicationDocumentsPath」は、MacのFinderの「書類」フォルダのパスを表していた。
FlutterでMacのデスクトップアプリを作成される方には、ご参考です。
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/