Flutter: Macのデスクトップアプリで、path_providerのメソッドが使えない

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)

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

使っている「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の学習で役立ったコンテンツ・書籍 /

 

 

 


Dart入門 – Dartの要点をつかむためのクイックツアー
タイトルとURLをコピーしました