如何使用SharedPreferences保存和加载对象

时间:2020-11-02 16:27:52

标签: flutter 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);
  }

1 个答案:

答案 0 :(得分:0)

将加载数据功能更改为:

recentSearch =(jsonDecode(prefs.getString('data')))。map((item)=> SearchModel.fromJson(item))。toList();