【发布时间】:2021-10-11 17:02:19
【问题描述】:
列表类型为Contact,是从contacts_service包中获取的Class。
我尝试先将其保存为jsonEncode,然后将其保存为列表:
List<Contact> contacts = [];
void saveContacts() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
final encoded = jsonEncode(contacts)
prefs.setStringList('contactList', encoded);
}
并加载它:
void loadContacts(){
SharedPreferences prefs = await SharedPreferences.getInstance();
contacts = jsonDecode(prefs.getString('contactList'))
但我收到错误List<dynmaic> instead of List<Contact>
所以我尝试将其转换为Map:
SharedPreferences prefs = await SharedPreferences.getInstance();
var encoded= jsonEncode(contacts, toEncodable: (c) {
if (c is Contact) {
return c.toMap();
}
});
prefs.setStringList('contactList', encoded);
和加载:
SharedPreferences prefs = await SharedPreferences.getInstance();
contacts = (jsonDecode(prefs.getString('List'))as List ).map((e) {return
Contact.fromMap(e);});
但我得到了String is not a subtype of type 'List<dynamic>' in type cast
所以现在我不知道还能做什么。
注意:使用Shared Preferences 和Json 不是必需的,如果保存此类内容更好,将尝试使用任何其他包。
【问题讨论】:
标签: json flutter dart sharedpreferences saving-data