颤振 - 保存文件

时间:2018-04-18 18:55:17

标签: file object save flutter

我正在学习扑动和飞镖。我不是一个非常有经验的开发人员(主要是一些C ++知识),但我真的很喜欢Flutter,我开始开发一些用于测试和学习的应用程序。我唯一真正的问题是我不懂如何将东西保存到设备中。我知道有一些教程,但它们并没有真正涵盖我想知道的内容。

计数器示例很好地向初学者展示了如何保存一个int。但在我的应用程序中,我想保存一个包含int,string和list值的对象列表。

所以我的问题是

  • 如何保存对象?
  • 我可以直接保存对象列表吗?
  • 如果我有两个不同的对象,我可以将它们保存在一个或两个单独的文件中吗?与用户选择的主题或偏好值相同吗?
  • 在我的应用程序中,用户应该能够扩展现有的对象列表。如何将已存在的对象保存到设备?
    • 如何阅读文件以及如何构建数据?我是否获得了我保存的对象或仅仅是他们的价值观?

你看:我还不是很有经验,但我真的想了解更多关于Flutter的信息!因此,如果您有关于该主题的任何良好链接或建议或通常是颤动请分享!

感谢您的帮助!

3 个答案:

答案 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数据库进行扑捉,则容易得多。

您可以参考的参考文献: