gpt4 book ai didi

flutter - 如何使用 SharedPreferences 保存和检索自定义对象列表?

转载 作者:行者123 更新时间:2023-12-03 02:44:13 25 4
gpt4 key购买 nike

我正在制作一个用于燃料费用跟踪的 Flutter 应用。我有一个简单的对象:

class Entry {
double _fuel;
double _money;
double _distance;

Entry(this._fuel, this._money, this.distance);

Entry.fromJson(Map<String, dynamic> json) => Entry (json['fuel'], json['money'], json['distance']);

Map<String, dynamic> toJson() => {'fuel':_fuel, 'money':_money, 'distance':_distance};
}

每当我重新装满我的坦克时,我都想创建一个新条目并几乎永远保留所有这些。在应用程序中我有一个 List<Entry> entries ,但我找不到将该列表保存在 SharedPreferences 中的方法.只有一种方法接受字符串列表。我应该创建一个新的 List<String> 吗?通过遍历我的 List<Entries>并序列化每个条目,然后将该列表保存到 SharedPreferences或者有更简单的方法吗?当我想阅读 SharedPreferences 时,如何重新创建我的列表?

更新:当然,我还需要能够从列表中删除特定条目。

谢谢。

最佳答案

  • 将它们保存为 List<String>确实是一个可行的选择,我能想到的另一个选择是使用 json.encode() 将整个列表序列化为 json。方法并将其作为字符串保存在 SharedPreferences 中,然后检索并反序列化它们并迭代它们以再次将它们变成您的自定义对象。
SharedPreferences prefs = await SharedPreferences.getInstance();
List<Entry> entries = // insert your objects here ;
final String entriesJson = json.encode(entries.map((entry) => entry.toJson()).toList());
prefs.setString('entries', entriesJson);
final String savedEntriesJson = prefs.getString('entries);
final List<dynamic> entriesDeserialized = json.decode(savedEntriesJson);
List<Entry> deserializedEntries = entriesDeserialized.map((json) => Entry.fromJson(json)).toList();
  • 要从 SharedPreferences 中删除特定键(及其值),只需使用 remove(key)方法,或者如果您要使用相同的键,您可以为键设置一个新值,它将覆盖以前的值。

  • 从您的 List<Entry> 中删除特定项目您可以使用 remove(entry) List class 的方法如果您可以使用 removeWhere((entry) => entry.distance > 500) 根据特定条件传递项目或删除项目例如。

希望对您有所帮助。

关于flutter - 如何使用 SharedPreferences 保存和检索自定义对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60338379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com