Flutter 如何使用SharedReferences保存和加载对象
因此,我一直在尝试使用共享首选项加载我最近的所有搜索历史对象。 它不起作用,它说“List不是List的子类型”,错误代码发生在我调用loadData函数时。我不知道为什么我的代码不起作用 这是我的共享首选项和方法代码:Flutter 如何使用SharedReferences保存和加载对象,flutter,sharedpreferences,Flutter,Sharedpreferences,因此,我一直在尝试使用共享首选项加载我最近的所有搜索历史对象。 它不起作用,它说“List不是List的子类型”,错误代码发生在我调用loadData函数时。我不知道为什么我的代码不起作用 这是我的共享首选项和方法代码: void _addLastSearch(String hospitalId,String hospitalName) { final lastSearching=SearchModel(hospitalId: hospitalId,hospitalName: hos
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);
}
加载数据功能中的任何im更改为:
recentSearch=(jsonDecode(prefs.getString('data')).map((item)=>SearchModel.fromJson(item)).toList() 我认为这是因为recentSearch变量的类型是list。您可以在每个SearchModel上尝试JSONECODE并从中创建一个列表,然后可以使用prefs.setStringList(“key”,list);存储并优先选择getStringList(“键”);要从共享\u首选项检索用户名,我找到了解决方案:),