SharedPrefrences 允许您存储 json。
所以我建议在 Event 类中添加一个 toMap() 方法:
Map<String, dynamic> toMap() {
return {
'imagePath': imagePath,
'title': title,
'eventId': eventId,
...
};
}
还有一个创建所有事件地图的函数:
Map<String, dynamic> todoEventosMap() {
Map<String, dynamci> map;
todoEventos.forEach((event) {
// eventId should be unique
map[event.eventId] = event.toMap();
});
return map;
}
然后你可以将地图编码为json并保存。
import 'dart:convert';
await prefs.setString('events', json.encode(todosEventosMap()));
从 sharedPreferences 中取回列表:
你可以为 Event 添加一个方便的工厂方法:
factory Event.fromMap(Map<String,dynamic> map) {
return Event(
imagePath = map['imagePath'],
title = map['title'],
eventId = map['eventId'],
...
);
}
创建 todoEventos 时将地图传递给工厂:
List<Event> todoEventos;
var events = json.decode(await prefs.getString('events')) as Map<String, dynamic>;
events.forEach((eventId, eventMap) => todoEventos.add(Event.fromMap(eventMap)));