我有一个最喜欢的音乐列表,我在首次打开应用程序时从音乐中检索该列表,应用程序从“收藏夹”中获取最喜欢的音乐列表。我想将此列表保存到共享
preferences.List<Music> favoriteMusic = new List<Music>();
其中音乐类为:
class Music {
final int id;
final String name, size, rating, duration, img;
bool favorite;
Music({
this.id,
this.rating,
this.size,
this.duration,
this.name,
this.img,
this.favorite,
});
factory Music.fromJson(Map<String, dynamic> jsonData){
return Music(
id: jsonData['id'],
rating: jsonData['rating'],
size: jsonData['size'],
duration: jsonData['duration'],
name: jsonData['name'],
img: jsonData['img'],
favorite: false,
);
}
}
如何保存最喜欢的音乐列表?
5条答案
按热度按时间jjhzyzn01#
您应该执行以下步骤
要保存对象:
1.用
toMap()
方法将对象转换为Map1.使用
encode(...)
方法将Map编码为字符串1.保存字符串到共享的首选项
用于还原对象:
1.使用
decode(...)
方法将共享偏好字符串解码为Map1.使用
fromJson()
方法得到你的对象更新完整样本
eanckbw92#
Flutter的
shared_preferences
插件有一个方法:setStringList(String key, List<String> value)
,因此您可以只为对象编写序列化程序。pkwftd7m3#
将其转换为字符串,可以存储它
nbysray54#
对于像我这样的新手来说,如果你想更多地了解我们亲爱的朋友Hamed在他的答案中所做的神奇之处,或者想让他的解决方案适用于更复杂的列表类/其他类,请查看以下两个链接:https://bezkoder.com/dart-flutter-parse-json-string-array-to-object-list/
https://bezkoder.com/dart-flutter-convert-object-to-json-string/
jsonEncode()和jsonDecode()与json.encode()和json.decode()相同
oewdyzsn5#
只需在共享首选项中使用stringlist
首先将对象转换为Map,然后使用
jsonEncode
将Map转换为JSON字符串,最后将JSON字符串保存到共享首选项中检索数据