Flutterでのファイルアクセスってどんな感じなのかちょっと触ってみたので、その備忘録
Asset
基本はこれ。
以下に詳しく書いてあるので、一度読めばだいたい分かると思います。
pubspec.yaml
にあらかじめassetで呼び出すファイルを指定します
flutter:
...
# To add assets to your application, add an assets section, like this:
assets:
- assets/test.png
呼び出しは画像用とbyteと文字列が呼び出せます。
文字列
Future<String> loadAsset() async {
return await rootBundle.loadString('assets/config.json');
}
画像
new AssetImage('graphics/background.png')
動画・音声
ドキュメントではテキストファイル(文字列)と画像しか触れていませんが、動画やたぶん音声も扱えます。
動画はvideo_playerプラグインが提供されており、こちらはassetした動画をプラットフォームから参照しています。
if (dataSource) {
NSString* assetPath;
NSString* package = argsMap[@"package"];
if (![package isEqual:[NSNull null]]) {
assetPath = [_registrar lookupKeyForAsset:dataSource fromPackage:package];
} else {
assetPath = [_registrar lookupKeyForAsset:dataSource];
}
player = [[FLTVideoPlayer alloc] initWithAsset:assetPath frameUpdater:frameUpdater];
} else {
dataSource = argsMap[@"uri"];
player = [[FLTVideoPlayer alloc] initWithURL:[NSURL URLWithString:dataSource]
frameUpdater:frameUpdater];
}
音声はちょっと探せてないので、確認できた方いらっしゃいましたらぜひ教えてください🙇
Filesystem
path_providerプラグインが提供されており、
こちらはアプリのファイルシステムにアクセスできます。
// 一時ファイル(よく消える)
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
// ドキュメントファイル(アプリ削除するまで消えないディレクトリ)
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
こちらはアプリ側で生成したものを読み込む、といった使い方になると思うので、アプリに組み込むファイルはAssetを使いましょう。
最後に
今後公式提供のプラグインが潤沢になればうれC
Android java書いたことないので、自力で実装はしんどいかも。。。(興味はある)