Flutterで端末にデータを保存する場合SharedPreferencesを使います。
これが一番簡単な方法、
もっとしっかり保存したい場合は、SQLiteも使えます!
FlutterでSQLiteを使う方法
目次
インストール
pubspec.yaml
dependencies:
shared_preferences: ^2.1.2
バージョンはその時の最新
https://pub.dev/packages/shared_preferences/install
データの書き込み
// SharedPreferencesを取得します。
final prefs = await SharedPreferences.getInstance();
// 'counter'キーに整数の値を保存します。
await prefs.setInt('counter', 10);
// boolean 値を 'repeat' キーに保存します。
await prefs.setBool('repeat', true);
// 'decimal' キーに double 値を保存します。
await prefs.setDouble('decimal', 1.5);
// 'action' キーに String 値を保存します。
await prefs.setString('action', 'Start');
// 'items' キーに文字列のリストを保存します。
await prefs.setStringList('items', <String>['Earth', 'Moon', 'Sun']);
データの読み込み
// 'counter'キーからデータを読み込む。存在しない場合は null を返します。
final int? counter = prefs.getInt('counter');
// 'repeat' キーからデータを読み込む。存在しない場合、null を返します。
final bool? repeat = prefs.getBool('repeat');
// 'decimal' キーからデータを読み込む。存在しない場合、null を返します。
final double? decimal = prefs.getDouble('decimal');
// 'action' キーからデータを読み込む。存在しない場合、null を返します。
final String? action = prefs.getString('action');
// 'items' キーからデータを読み込む。存在しない場合、null を返します。
final List<String>? items = prefs.getStringList('items');
データの削除
// 'counter'キーのデータを削除します。
final success = await prefs.remove('counter');
おまけ
initStateの中でSharedPreferencesを使う
initState() {
SharedPreferences.getInstance().then((prefs) {
final int? counter = prefs.getInt('counter');
});
}
非同期関数を使うときにいちいち関数とか定義するのめんどいときに、
thenでつなげてそこでいろいろできるのです。
SharedPrefernceでMapを保存する
Jsonとかで文字列保存するのはどうでしょうか?
データが多いなら、SQLiteがいいですがすこしならこれでいいかなー
var hoge = {'name':'tanaka', 'age': 528};
// 保存
await prefs.setString('hoge', JsonEncode(hoge));
// 取得
hoge = JsonDecode(prefs.getString('hoge'));
Flutter開発で知らないと損すること