未经处理的异常:类型 'List<dynamic>' 不是 Flutter 中共享首选项的类型'List<UserInterests>'子类型



在我的应用程序中,我想要存储共享首选项中的对象列表,但当我从共享首选项获得数据时,我会得到未处理的异常:

类型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),
];

相关内容

最新更新