vto*_*c85 3 sharedpreferences dart flutter
我正在制作一个 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};
}
Run Code Online (Sandbox Code Playgroud)
每当我重新装满油箱时,我都想创建一个新条目并几乎永远保留所有这些条目。在应用程序中,我有一个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();
Run Code Online (Sandbox Code Playgroud)
要从 SharedPreferences 中删除特定键(及其值),只需使用该remove(key)方法,或者如果您要使用相同的键,您可以使用新值设置键,它将覆盖先前的值。
若要从删除特定的项目List<Entry>,你可以使用该remove(entry)方法List class,如果你能通过项目或删除取决于一定条件下使用的项目removeWhere((entry) => entry.distance > 500)为例。
希望有所帮助。
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |