如何访问 Flutter 的共享偏好文件?

Posted

技术标签:

【中文标题】如何访问 Flutter 的共享偏好文件?【英文标题】:How to access Flutter's shared preference file? 【发布时间】:2022-01-23 09:46:50 【问题描述】:

我是 Flutter 的新手,目前,我正在编写一个需要将键值对存储到磁盘并在每次打开应用程序时读取它的应用程序。

我基于this document,使用共享首选项包,它工作正常。但是,调试并不容易,我习惯了web开发,类似的想法,localStorage可以使用几乎任何浏览器(例如Chrome)在运行时轻松访问和编辑,这个特性使得开发和调试变得容易。

所以我的问题是,在 Flutter 开发中是否存在一些等价物,我可以轻松地编辑共享偏好存储? 最需要的功能之一是清除共享存储中的所有内容,这样我就可以重复运行干净的程序并进行调试

现在我只能通过编写类似preferences.clear() 的功能代码并运行一次来​​做到这一点,这很痛苦。

我正在使用 VSCode + android AVD 进行 Flutter 开发。

谢谢!

【问题讨论】:

似乎没有任何***api来删除共享首选项。您可以添加用于检查调试模式或发布的逻辑,并依赖于模式,添加逻辑。但是,如果您能找到解决方案,那就太好了。我会关注这篇文章的。 哦,应用重启时需要清除共享偏好数据吗?如果是这样,***.com/a/62633774/10084055 @AtamyratBabayev 嗨,我正在寻找调试工具,我可以清除缓冲区并重新启动程序。现在,我正在主文件中编写一些临时代码,只是为了清除缓冲区,然后将其注释掉。这显然不是“正确”的方式。 正如我所说,没有任何*** api 可以删除共享首选项。我建议做的是创建“伪”共享首选项的单例,这将保留数据直到应用程序死亡或热重载。无论如何,我的选择是清除应用启动时的数据。 哦,抱歉,我的用例是移动开发。 【参考方案1】:

所以我的问题是,在 Flutter 开发中是否存在一些等价物,我可以轻松地编辑共享偏好存储?

是的,您可以通过设置的键来编辑 SharedPreferences 值,

prefs.Setanytype(key,value); // will be used to set and update if key not found it will create else if found it will update to the same key.
updateSharedKeyVal(String prefKey, String prefValue) async 
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString(prefKey, prefValue);
    // you can save or set value to persistent storage in the background
    //prefs.setInt(prefKey, prefValue);
    //prefs.setBool(prefKey, prefValue);
    //prefs.setDouble(prefKey, prefValue);


updateSharedKeyVal("my_key_name","my_updated_value");

To Clear,

clearSharedPreference() async 
   SharedPreferences prefs = await SharedPreferences.getInstance();
   prefs.clear();

【讨论】:

这不是我要找的,我要找调试工具。我可以清除缓冲区,而无需编写临时代码来执行此操作。是的,目前我正在做类似的事情,通过在主函数中放置一个临时代码来清除缓冲区,但显然这是一种非常麻烦的方式。我在网络开发中寻找类似 Chrome 检查的东西。【参考方案2】:

我找到了一种解决方法,直接修改Android虚拟机中的文件: 转到 Android 视图 -> 工具窗口 -> 设备文件资源管理器。

在这里您将看到虚拟电话设备上的所有文件。

导航到您的应用文件夹,通常在 data/data/com.example.yourprojectname 中

在shared_prefs文件夹中,有一个XML文件,里面包含了所有的本地键值对,你可以直接修改,也可以在这里删除。

PS:在现阶段,如果 Flutter 应用有大量基于本地(SQLite 和共享偏好)的功能,Android Studio 是一个比 VSCode 更好的开发工具,可以更好地检查虚拟设备。

【讨论】:

以上是关于如何访问 Flutter 的共享偏好文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在详细屏幕中查看项目的详细信息 - Flutter

如何在不使用共享首选项的情况下将数据存储为颤动的对象[关闭]

es浏览器连接mac共享

使用后退按钮退出应用程序后,我只能从共享偏好中获取值

如何在android端访问flutter Shared首选项(使用java)

Flutter:使用共享首选项时对 null 的方法调用