[Flutter] SharedPreferencesを使って、オブジェクトのList(配列)をJSONの形にして保存する
Flutterのアプリ作成で、
オブジェクトのListを端末に保存しておきたかったので、
あまりそのようなケースは、多くないかもしれませんが、覚書として記事にしました。
少しでも誰かのお役に立てれば、幸いです。
JSONに変換する
SharedPreferencesで端末に保存できる値は、
int
、double
、bool
、String
、List<String>
の型のみなので、
オブジェクトのListの場合は、それをJSONに変換してString
として保存します。
import 'package:shared_preferences/shared_preferences.dart';
Future<void> setObjectList(List<T> objectList) async {
SharedPreferences _prefs = await SharedPreferences.getInstance();
final jsonString = jsonEncode(objectList).toString();
await _prefs.setString('TEST', jsonString);
}
取得したStringを元のオブジェクトのリストに変換する
値を取得した後は、その文字列をJSONに戻して、
オブジェクトのFreezedクラスのfromJson
を利用して、元のオブジェクトに戻して、
リストにします。
Future<List<T>> getObjectList() async {
SharedPreferences _prefs = await SharedPreferences.getInstance();
final jsonString = _prefs.getString('TEST') ?? "";
final List<dynamic> decodedJson = jsonDecode(jsonString);
final objectList = decodedJson.map((e) =>Object.fromJson(e)).toList();
return objectList;
}
参考にしたサイト
Author And Source
この問題について([Flutter] SharedPreferencesを使って、オブジェクトのList(配列)をJSONの形にして保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/Hiiisan/items/4ba3739e286a8025ac1c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .