因此,我一直在尝试使用共享的首选项加载我的所有“最近搜索”历史记录对象。 并且它不起作用,它说“列表不是列表的子类型”,当我调用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);
}
答案 0 :(得分:0)
将加载数据功能更改为:
recentSearch =(jsonDecode(prefs.getString('data')))。map((item)=> SearchModel.fromJson(item))。toList();