首页 > 解决方案 > flutter 文件存储应用状态

问题描述

我正在尝试读取/写入将为我的应用程序存储数据的文件(json 文件)。对于我应该在我的项目中保存这样一个文件的位置,我有点困惑。一方面,我似乎应该创建一个资产并按照此处看到的说明进行操作:

https://flutter.dev/docs/development/ui/assets-and-images#loading-text-assets

另一方面,我似乎应该使用一个叫做“文档目录”的东西</p>

https://flutter.dev/docs/cookbook/persistence/reading-writing-files#1-find-the-correct-local-path

按照第一个链接中的示例,我可以将 json 文件加载到我的应用程序中并使用

loadAsset(‘assets/asset.json’)功能

由此我可以在这个位置很好地读取一个文件,但我无法弄清楚如何写入这个文件。

现在使用第二个链接,我可以使用“文档目​​录”编写文件。但是,当我尝试找到写入的文件时,我在硬盘上的任何地方都找不到该文件。

所以我的第一个问题是,如果我想存储一个保存我的应用程序状态的文件,我应该在哪里做呢?它应该是一种资产吗?还是应该存储在“文档目录”中?

我的猜测是资产用于只读资产,例如静态配置文件和图像,而“文档目录”是我想存储我的应用程序数据的方式。这个对吗?

如果是这样,当我调试我的应用程序时,如何将文件放入我的“文档目录”以及它在我的项目结构中的什么位置?

当我打印写入文件的位置时,它是:

'/data/user/0/com.example.flutter_expansion_tile_05/app_flutter/tree.json'

这不是我电脑上的有效位置。

我猜“文档目录”(AppData目录)只有在我的手机上运行时才有意义,而不是在我的PC上以调试模式运行时才有意义???

标签: flutterdart

解决方案


如您所说,您应该使用“文档目​​录”,这是首选方法。 这会将文件读/写到安装了您的应用程序的设备本地存储中,而不是在您的计算机本地存储中。


/data/user/0/com.example.flutter_expansion_tile_05/app_flutter/tree.json

上面的路径是安装应用程序的设备中文件的路径。

现在,如果您使用的是 Android Studio 和 Emulator,那么您可以从 Android Studio 本身查看模拟器文件。

为此,请打开Device File Explorer按钮或转到

查看 --> 工具窗口 --> 设备文件资源管理器

并导航到给定的路径。

https://developer.android.com/studio/debug/device-file-explorer


推荐阅读