- 非同期ファイルアクセスは基本
try-catch-finally
を使う
Future<File> writeAsString(<String>)
// 基本1
try {
var value = await <File>.readAsString();
} catch (e) {
...
} finally {
...
}
// 基本2
var readFileFuture = Future<File>.then((String value) => value);
try {
var value = <File>.readAsStringSync();
} catch (e) {
...
}
$ flutter pub add path_provider
アプリのファイルを保存する場所を調べる機能を提供する.
スマホの場合, 適当な場所に保存しようとしても失敗する.
あらかじめわりあてられている場所に保存する必要がある.
import 'package:path_provider/path_provider.dart';
import 'dart:io';
final Directory directory = await getApplicationDocumentsDirectory();
final filePath = await File(directory.path + '/' + 'your_path');
Future<Directory> getApplicationDocumentsDirectory()
import 'package:flutter/service.dart';
Future<String> getDataAsset(String path) {
// AssetBundleクラスのインスタンスが代入されたトップレベルプロパティで,
// アプリケーションに用意されているリソースを管理する.
return await rootBundle.loadString(path);
}
- 設定情報の管理
- key=value形式
- '$ flutter pub add shared_preference'
- Androidでは, SharedPreferencesクラスを使用する
- iOSでは, UserDefaultsクラスを利用する
型 |
setメソッド |
getメソッド |
int |
setInt(, )
|
getInt()
|
double |
setDouble(, )
|
getDouble()
|
bool |
setBool(, )
|
getBool()
|
String |
setString(, )
|
getString()
|
List
|
setStringList( [])
|
getStringList()
|
import 'package:shared_preferences/shared_preferences.dart';
// 非同期
sharedPreferences.getInstance().then(
(SharedPreferences prefs) {
// 設定処理
prefs.setInt(`key_int`, 0);
prefs.setDouble('key_double', 0.0);
prefs.setBool('key_bool', false);
prefs.setString('key_string', 'default');
prefs.setStringList('key_list_str', <String>['a', 'b', 'c', 'd', 'e']);
final value = prefs.get('key_***'); // 型はkeyで決まる
if (value == null) {
return Future.value(なにか);
}
}).catchError((e) {
// エラー処理
}).whenComplete(() {
// 後始末
});