file - Flutter - 保存文件

标签 file object save flutter

我目前正在学习 flutter 和 dart。我不是一个非常有经验的开发人员(主要是一些 C++ 知识),但我真的很喜欢 Flutter,并且我开始开发一些用于测试和学习的 App。我唯一真正的问题是我不明白如何将内容保存到设备上。我知道有一些教程,但它们并没有真正涵盖我想知道的内容。

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

所以我的问题是

  • 如何保存对象?
  • 我可以简单地保存对象列表吗?
  • 如果我有两个不同的对象,我是否要将它们保存在一个或两个单独的文件中?与用户选择的主题或偏好值相同吗?
  • 在我的应用程序中,用户应该能够扩展现有的对象列表。如何将那些已经存在的对象保存到设备中?
    • 如何读取文件以及数据的结构如何?我获取的是我保存的对象还是只是它们的值?

你看:我经验还不是很丰富,但是我真的很想了解更多关于Flutter的知识!因此,如果您有关于该主题或一般 Flutter 的任何好的链接或建议,请分享!

感谢您的帮助!

最佳答案

当我需要存储少量数据时,我使用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,
      };
}

如果你有一个成员(member)资格列表,你可以像这样保存它

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

关于file - Flutter - 保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907078/

相关文章:

python - 重新运行程序时出现问题

python - 这段打开文件的代码有什么问题?

excel - 传递对象时的byval vs byref

arrays - Swift 存储自定义对象数组

python - 我尝试保存图像有什么问题?

ruby-on-rails - Ruby on Rails 从一种形式保存在两个表中

ios - 如何简单存储一些文件

java - 执行速度很慢

javascript - 从现有的 JSON 对象数组创建一个空的 JSON 对象

c# - 如何编写处理单个对象和集合的通用 Save() 方法?