[Flutter] Shared preferences

2021-06-06 hit count image

今回のブログポストではFlutterでローカルに簡単なデータを保存するためShared preferencesパッケージを使う方法について説明します。

概要

Flutterでアプリを開発する時、ウェブのlocalStorageやReact NativeのAsyncStorageように、ユーザの端末に簡単なデータを保存したい時があります。この時、Flutterで使えるパッケージがShared preferencesです

Flutterの公式ドキュメントでも使い方が詳しく乗っておりますので、ご参考してください。

Shared preferencesパッケージのインストール

Shared preferencesはユーザの端末にkey-valueの形で簡単なデータを保存することができます。そしたら、Shared preferencesを使うため下記のコマンを使ってパッケージをインストールします。

flutter pub add shared_preferences

Shared preferencesの使い方

Shared preferencesではintdoubleboolstringまたは、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で開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts