我有一个列表contacts
,其中存储Contact
了从contact_services
包中获取的类型
List<Contact> contacts = [];
SharedPrefrences
我首先使用它存储列表jsonEncode
,然后保存它
void saveContacts() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('list', jsonEncode(contacts));
}
但是当我尝试加载列表时它返回一个异常type 'List<dynamic>' is not a subtype of type 'List<Contact>'
void loadList() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
contacts = await jsonDecode(prefs.getString('list'));
}
更新代码以突出显示更改:
这是整个saveContacts
功能:
void saveContacts() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
var json = jsonEncode(contacts, toEncodable: (e) => e.toMap());
await prefs.setString('list', jsonEncode(json));
}
但我收到错误:The method 'toMap' isn't defined for the type 'Object'.
联系人只是一个存储Contact
类型的列表
List<Contact> contact;
最初contact
存储在单独的文件夹(全局)中以便于访问,但这不会影响结果jsonEncode