gpt4 book ai didi

flutter - 如何在 Flutter 中将 List 保存到 SharedPreferences?
转载 作者:行者123 更新时间:2023-12-04 11:04:02 31 4
gpt4 key购买 nike

我有一个最喜欢的音乐列表,我在第一次打开应用程序时从音乐中检索它,该应用程序从最喜欢的音乐列表中获取一个最喜欢的音乐列表。我想将此列表保存为共享

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,
);
}
}

如何保存最喜欢的音乐列表?

最佳答案

你应该做这些步骤
保存对象:

  1. convert your object to map with toMap() method
  2. encode your map to string with encode(...) method
  3. save the string to shared preferences

用于恢复您的对象:
  1. decode shared preference string to a map with decode(...) method
  2. use fromJson() method to get your object


更新完整样本
import 'dart:convert';

void main() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();

// Encode and store data in SharedPreferences
final String encodedData = Music.encode([
Music(id: 1, ...),
Music(id: 2, ...),
Music(id: 3, ...),
]);

await prefs.setString('musics_key', encodedData);

// Fetch and decode data
final String musicsString = await prefs.getString('musics_key');

final List<Music> musics = Music.decode(musicsString);
}

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,
);
}

static Map<String, dynamic> toMap(Music music) => {
'id': music.id,
'rating': music.rating,
'size': music.size,
'duration': music.duration,
'name': music.name,
'img': music.img,
'favorite': music.favorite,
};

static String encode(List<Music> musics) => json.encode(
musics
.map<Map<String, dynamic>>((music) => Music.toMap(music))
.toList(),
);

static List<Music> decode(String musics) =>
(json.decode(musics) as List<dynamic>)
.map<Music>((item) => Music.fromJson(item))
.toList();
}

关于flutter - 如何在 Flutter 中将 List<Object> 保存到 SharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61316208/

31 4 0