如何将列表保存到SharedPreferences中?

问题描述 投票:1回答:2

我有一个喜欢的音乐列表,我会从音乐中检索它,当应用程序首次打开时,应用程序会从收藏夹中获取喜欢的音乐列表。我想将此列表保存到共享

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

如何保存收藏夹音乐列表?

flutter sharedpreferences listobject
2个回答
0
投票

首先,您可以将模型转换为字符串,然后将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");
}

0
投票

您可以添加此方法以将对象转换为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对象。

© www.soinside.com 2019 - 2024. All rights reserved.