在我的应用程序中,我想要存储共享首选项中的对象列表,但当我从共享首选项获得数据时,我会得到未处理的异常:
类型
List<dynamic>
不是类型List<UserInterests>
的子类型
异常并且没有获得数据
这是我的代码
static void addInterests(List<UserInterests> interests) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('interstsArray', jsonEncode(interests));
}
static Future<List<UserInterests>> getInterests() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<UserInterests> interests = jsonDecode(prefs.getString('interstsArray'));
return interests;
}
static void logoutUserSF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove("interstsArray");
}
第二行jsonDecode中的getInterest函数出现错误,给出了一些如何进行的建议
jsonDecode()
将String
转换为List<dynamic>
,它不知道UserInterests
的类型。你必须编写一个函数/构造函数来自己转换它,比如:
UserInterests.fromJson(List<dynamic> json){
firstMember = json['firstMember'];
secondMember = json['secondMember'];
}
然后你可以像这样使用它:
List<UserInterests> interests = [
for(var json in jsonDecode(prefs.getString('interstsArray')))
UserInterests.fromJson(json),
];