見出し画像

FlutterでAndroidのexternal public storage(外部ストレージ)を取得できるライブラリを公開しました

Flutterでストレージのパスを取得する関数はFlutter公式プラグインプロジェクトの path_provider を使って取得することができます。

iOSの場合と、ユーザーに公開するようなファイルでない場合はこのプラグインを使えばいいと思うのですが、AndroidのPictureフォルダとか、DCIMフォルダのような共有フォルダ(public storage)と呼ばれる領域にアクセスできる関数は用意されていません。

Androidネイティブのほうでは、 こんな感じでパスを取得することができます。これと同じことがFlutterでもしたいわけです🤔

Environment.getExternalStoragePublicDirectory(Environtment.DIRECTORY_PICTURES);

FlutterでAndroidネイティブのようにパスを取得できるやり方があるのかと思ったのですが、これだ!というものにたどり着けなかったので作ってみました✨

Fluter Packageに公開しているのでpubspeck.yamlに追記して flutter pub get で簡単にインストールすることができます。

dependencies:
 ext_storage:

Androidの関数とほぼ同じような形で使うことができるので使いやすいと思います。

例えばPictureフォルダを取得する場合はこんな感じです。

 var path = await ExtStorage.getExternalStoragePublicDirectory(ExtStorage.DIRECTORY_PICTURES);

注意点が2つあって、Androidネイティブのコードを呼び出してAndroidの共有ディレクトリを取得しているのでiOSでは例外が発生します。必ずOSチェックしてください。

もう一つは、読み込み書き込みするときは別途権限がいるので、権限確認処理を実行してから実行してください。permission deninedが発生します。

とてもミニマムなプラグインで、単純にAndroidネイティブを呼び出すようなコードになっていて、Androidネイティブと同じように動作するので簡易に使うことができます😄

外部ストレージを簡単に取得したいのにできない~という人はぜひ使ってください。では。

この記事が気に入ったらサポートをしてみませんか?