概要
Flutterでアプリを開発する時、ウェブのlocalStorageやReact NativeのAsyncStorageように、ユーザの端末に簡単なデータを保存したい時があります。この時、Flutterで使えるパッケージがShared preferencesです
Flutterの公式ドキュメントでも使い方が詳しく乗っておりますので、ご参考してください。
- 公式ドキュメント: Store key-value data on disk
Shared preferencesパッケージのインストール
Shared preferencesはユーザの端末にkey-valueの形で簡単なデータを保存することができます。そしたら、Shared preferencesを使うため下記のコマンを使ってパッケージをインストールします。
flutter pub add shared_preferences
Shared preferencesの使い方
Shared preferencesではint、double、bool、stringまたは、List<String>のデータを保存んすることができます。そしたら、Shared preferencesを使ってデータの読み取り/書き込み/削除について説明します。
データの保存
Shared preferencesを使って下記のようにデータを保存することができます。
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
prefs.setInt('counter', 0);
prefs.setDouble('width', 20.5);
prefs.setBool('isAdmin', true);
prefs.setString('userName', 'dev-yakuza');
prefs.setStringList('alphabet', ['a', 'b', 'c', 'd']);
データの読み取り
Shared preferencesを使って次のようにデータを読むことができます。
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
final counter = prefs.getInt('counter') ?? 0;
final width = prefs.getDouble('width') ?? 10.5;
final isAdmin = prefs.getBool('isAdmin') ?? false;
final userName = prefs.getString('userName') ?? '';
final alphabet = prefs.getStringList('alphabet') ?? [];
final data = prefs.get('userInfo') : {};
データの削除
次のようにShared preferencesを使って保存したデータを削除することができます。
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
prefs.remove('counter');
または次のように全てのデータを削除することもできます。
prefs.clear();
ユニットテスト
Shared preferencesパッケージを使うコードをユニットテスト(Unit Test)をする時、次のようにShared preferencesが提供するsetMockInitialValuesを使ってデータを初期化することができます。
...
import 'package:shared_preferences/shared_preferences.dart';
...
setUp(() {
SharedPreferences.setMockInitialValues({});
});
完了
これでFlutterで簡単なデータをユーザの端末に保存するためShared preferencesを使う方法についてみてみました。Shared preferencesパッケージは基本的簡単なデータを保存するように設計されました。したがって、大きいデータを保存するには適していません。単純にユーザが選択した設定のオプションなどを保存する時、使うことをお勧めします。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Dekuが開発したアプリを使ってみてください。Dekuが開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。






