Flutterでデータを読み書きする場合, SharedPreferencesかLocalStorageを使用するケースが多い。
SharedPreferencesは NSUserDefaults (iOS) と SharedPreferences (Android)をラッピングしたライブラリです。
key-valueで端末のDiskに永続化できるため便利。
今回はよく使うSharedPreferencesの使い方を書き溜め。
非同期に扱う必要があるのと、永続性を保証するものでないことをお忘れなく。
概要
pubspec.yamlに追加
pubspec.yamlにshared_preferencesを追記して
flutter pub getを実行。
1 2 3 4 5 6 |
dependencies: flutter: sdk: flutter # ↓を追記 shared_preferences: |
Valueで使用可能な型
まず、valueで使用できるのは下記5つ
- Bool
- Int
- Double
- String
- StringList
データの書き込み方法
非同期で実行します。
例では、BoolとStringListを書き込む。
value Boolを書き込む場合
setBool(key, value)を使う。
1 2 3 4 5 6 |
import 'package:shared_preferences/shared_preferences.dart'; setStringListData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool("isMydata", true); } |
value StringListを書き込む場合
setStringList(key, value)を使う。
1 2 3 4 5 6 7 |
import 'package:shared_preferences/shared_preferences.dart'; setStringListData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); var strings = ["hoge", "fuga", "uga", "mogo"]; await prefs.setStringList("myStringListData", strings); } |
簡単。
データの読み込み方法
非同期で実行します。
例では、IntとStringを読み込む
value Intを読み込む場合
getInt(key)を使う。
1 2 3 4 5 6 7 |
import 'package:shared_preferences/shared_preferences.dart'; getLocalIntData() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); var myIntData = await prefs.getInt("myData"); print(myIntData); } |
value Stringを読み込む場合
getString(key)を使う。
1 2 3 4 5 6 7 |
import 'package:shared_preferences/shared_preferences.dart'; getLocalStringData() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); var myStringData = await prefs.getString("myData"); print(myStringData); } |
いい感じ。
データを削除する方法
非同期で実行します。
removeでkeyを指定するだけ。
1 2 3 4 5 6 |
import 'package:shared_preferences/shared_preferences.dart'; removeData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.remove("myData"); } |
認証用トークンとかを保存するときに使う事が多いかな。
詳しくは公式をどうぞ
じゃあね〜〜〜〜。