我有一个喜欢的音乐列表,我会从音乐中检索它,当应用程序首次打开时,应用程序会从收藏夹中获取喜欢的音乐列表。我想将此列表保存到共享
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,
);
}
}
如何保存收藏夹音乐列表?
首先,您可以将模型转换为字符串,然后将List<String>
保存到SharedPreferences
中。这是您应该如何做。
prefs.setStringList("key", yourList);
SharedPreferences prefs;
List<String> list;
// ...
Future<bool> _saveList() async {
return await prefs.setStringList("key", list);
}
List<String> _getList() {
return prefs.getStringList("key");
}
您可以添加此方法以将对象转换为Map
Map<String, dynamic> toJson(Music music) =>
{
'id': music.id,
'rating': music.rating,
'size': music.size,
'duration': music.duration,
'name': music.name,
'img': music.img,
'favorite': music.favorite,
};
然后使用json.encode(to_json_result)
并将其另存为字符串。
为了将强转换为对象,首先使用json.decode(saved_string)
,然后将其传递给fromJson
方法以获取Music
对象。