インストール
pubspec.yaml
に以下を追加します
バージョンはアップデートに合わせて適宜変更してください
pub.dev shared_preferences
dependencies:
shared_preferences: ^0.5.7+3
SharedPreferenceをジェネリクスで扱う
SharedPreferenceのラッパーを作ります
import 'package:shared_preferences/shared_preferences.dart';
// 永続化したい値とマッピングするキーを設定しておく
enum HogeKey {
HogeID,
HogeToken
}
class HogeSharedPreferences {
/// 値を永続化する
static Future<void> store<T>(T value, HogeKey key) async {
SharedPreferences preferences = await SharedPreferences.getInstance();
if (value is String) {
preferences.setString(key.toString(), value);
} else if (value is bool) {
preferences.setBool(key.toString(), value);
} else if (value is double) {
preferences.setDouble(key.toString(), value);
} else if (value is int) {
preferences.setInt(key.toString(), value);
} else if (value is List<String>) {
preferences.setStringList(key.toString(), value);
} else {
Exception('Not compatible type');
}
}
/// 永続化した値を取得する
static Future<T> restore<T>(HogeKey key) async {
SharedPreferences preferences = await SharedPreferences.getInstance();
return preferences.get(key.toString()) as T;
}
/// 永続化した値を全て削除する
static Future<void> removeAll() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.remove(HogeKey.HogeID.toString());
preferences.remove(HogeKey.HogeToken.toString());
}
}
以下のように利用できると思います。
// 永続化
HogeSharedPreferences.store<String>('fuga', HogeKey.HogeToken);
// 取得
HogeSharedPreferences.restore<String>(HogeKey.HogeToken);
あとがき
もっといい方法があるよとか、リファクタリングできるんじゃないか?などありましたら編集リクエストくださいませ!