概要
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で開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。