我正在学习扑动和飞镖。我不是一个非常有经验的开发人员(主要是一些C ++知识),但我真的很喜欢Flutter,我开始开发一些用于测试和学习的应用程序。我唯一真正的问题是我不懂如何将东西保存到设备中。我知道有一些教程,但它们并没有真正涵盖我想知道的内容。
计数器示例很好地向初学者展示了如何保存一个int。但在我的应用程序中,我想保存一个包含int,string和list值的对象列表。
所以我的问题是
你看:我还不是很有经验,但我真的想了解更多关于Flutter的信息!因此,如果您有关于该主题的任何良好链接或建议或通常是颤动请分享!
感谢您的帮助!
答案 0 :(得分:1)
当我需要存储少量数据时,我使用shared_preferences。在存储和解码之前,我将Dart对象编码为json。
要保存对象,请将其编码为json。要保存对象列表,请对整个列表进行编码。您可以选择是否将不同的对象一起保存或单独保存。
当保存的对象列表发生更改时,我只需重新编写整个列表。
你应该从一些简单的对象开始。这样你就会发现你可以很容易地保存和阅读它们。
(Dart的一大优点是你可以从命令行运行它。这样你就可以先创建和测试数据对象,然后再将它们包含在Flutter应用程序中。单元测试内置于Dart中。 )
这是一个知道如何将自身编码/解码为json
的类的示例class Membership {
int _index;
String _name;
String _id;
Membership(this._index, this._name, this._id);
Membership.fromJson(Map<String, dynamic> m) {
_index = m['index'];
_name = m['name'];
_id = m['id'];
}
String get id => _id;
String get name => _name;
int get index => _index;
Map<String, dynamic> toJson() => {
'index': _index,
'name': _name,
'id': _id,
};
}
如果您有会员资格列表,您可以像这样坚持
List<Membership> memberships = [];
final String membershipKey = 'someuniquestring'; // maybe use your domain + appname
SharedPreferences sp = await SharedPreferences.getInstance();
sp.setString(membershipKey, json.encode(memberships));
并像这样检索它
memberships = [];
json
.decode(sp.getString(membershipKey))
.forEach((map) => memberships.add(new Membership.fromJson(map)));
// don't forget to call setState((){}) to update the Widgets
答案 1 :(得分:0)
我建议使用sqlfite,一个访问sqlite的插件。
答案 2 :(得分:0)
保存对象意味着保存应用程序状态。 可以通过数据库或sharedpreference之类的数据保存技术来完成
如果您当时需要保存确切的对象,则使用sharedPreference或sqflite可能会很忙。
但是,如果使用HIVE数据库进行扑捉,则容易得多。
您可以参考的参考文献: