我一直在使用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); } } ```
DartPad上的示例。
使用以下命令将列表保存到SharedPreferences中setStringList:
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:
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, }; }