3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Flutter] SharedPreferencesを使って、オブジェクトのList(配列)をJSONにして保存する

Last updated at Posted at 2022-04-02

Flutterのアプリ作成で、

オブジェクトのListを端末に保存しておきたかったので、

あまりそのようなケースは、多くないかもしれませんが、覚書として記事にしました。

少しでも誰かのお役に立てれば、幸いです。

JSONに変換する

SharedPreferencesで端末に保存できる値は、

intdoubleboolStringList<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;
  }

参考にしたサイト

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?