【Flutter】端末にデータを保存する方法【SharedPreferences】

Flutterで端末にデータを保存する場合SharedPreferencesを使います。
これが一番簡単な方法、

もっとしっかり保存したい場合は、SQLiteも使えます!
Flutterで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');

https://pub.dev/packages/shared_preferences

おまけ

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開発で知らないと損すること Flutter開発で知らないと損すること

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です