一尘不染

创建Json数组并使用SharedPreferences列出

flutter

我一直在使用shared_preferences创建和写入Json
Files。我面临的问题是我不知道如何在shared_preferences中创建一个Json数组和一个列表。

我想保存并阅读Json List。

  read(String key) async {
    final prefs = await SharedPreferences.getInstance();
    return json.decode(prefs.getString(key));
  }

  save(String key, value) async {
    final prefs = await SharedPreferences.getInstance();
    prefs.setString(key, json.encode(value));
  }

  remove(String key) async {
    final prefs = await SharedPreferences.getInstance();
    prefs.remove(key);
  }
} ```

阅读 271

收藏
2020-08-13

共1个答案

一尘不染

DartPad上的示例

使用以下命令将列表保存到SharedPreferences中setStringList

  const String key = "users";

  List<User> users = [User(name: "tester")];
  List<String> jsonList = users.map((user) => user.toJson()).toList();
  SharedPreferences prefs = await SharedPreferences.getInstance();

  prefs.setStringList(key, jsonList);

使用以下内容从SharedPreferences中读取列表getStringList

  jsonList = prefs.getStringList(key);

  users = jsonList.map((json) => User.fromJson(json)).toList();

带有json转换的用户类:JSON和序列化

class User {
  String name;
  int age;

  User({
    this.name,
    this.age,
  });

  factory User.fromJson(String str) => User.fromMap(json.decode(str));

  String toJson() => json.encode(toMap());

  factory User.fromMap(Map<String, dynamic> json) => User(
        name: json["name"],
        age: json["age"],
      );

  Map<String, dynamic> toMap() => {
        "name": name,
        "age": age,
      };
}
2020-08-13