如何使用 SharedPreferences 保存和加载对象
How To save and load an Object using SharedPreferences
所以我一直在尝试使用共享首选项加载我所有的最近搜索历史记录对象。
它不起作用,它说“列表不是列表的子类型”错误代码发生在我调用 loadData 函数时。我不知道为什么我的代码不起作用。
这是我的共享偏好和方法代码:
void _addLastSearch(String hospitalId,String hospitalName)
{
final lastSearching=SearchModel(hospitalId: hospitalId,hospitalName: hospitalName);
setState(() {
recentSearch.add(lastSearching);
});
}
void savedData() async {
SharedPreferences prefs= await SharedPreferences.getInstance();
prefs.setString('data',jsonEncode(recentSearch));
}
void loadData()async{
SharedPreferences prefs= await SharedPreferences.getInstance();
print("test masul load");
recentSearch=jsonDecode(prefs.getString('data'));
print(recentSearch.length);
}
我将加载数据功能更改为:
recentSearch=(jsonDecode(prefs.getString('data')).map((item)=>SearchModel.fromJson(item)).toList();
所以我一直在尝试使用共享首选项加载我所有的最近搜索历史记录对象。 它不起作用,它说“列表不是列表的子类型”错误代码发生在我调用 loadData 函数时。我不知道为什么我的代码不起作用。
这是我的共享偏好和方法代码:
void _addLastSearch(String hospitalId,String hospitalName)
{
final lastSearching=SearchModel(hospitalId: hospitalId,hospitalName: hospitalName);
setState(() {
recentSearch.add(lastSearching);
});
}
void savedData() async {
SharedPreferences prefs= await SharedPreferences.getInstance();
prefs.setString('data',jsonEncode(recentSearch));
}
void loadData()async{
SharedPreferences prefs= await SharedPreferences.getInstance();
print("test masul load");
recentSearch=jsonDecode(prefs.getString('data'));
print(recentSearch.length);
}
我将加载数据功能更改为:
recentSearch=(jsonDecode(prefs.getString('data')).map((item)=>SearchModel.fromJson(item)).toList();