选择何时何地在本地保存数据[关闭]

Posted

技术标签:

【中文标题】选择何时何地在本地保存数据[关闭]【英文标题】:Choosing when and where to save data locally [closed] 【发布时间】:2021-09-12 02:05:14 【问题描述】:

用户数据可以是 saved multiple ways 与 Flutter。就我而言,我正在保存一个简单的List 对象。这些对象只有少数String 属性。当创建主 Scaffold() 对象时,我加载数据并将其转换为对象的 List(来自 Json 字符串)。

首先,什么时候应该保存数据?何时处置主要的Scaffold() 对象?每次对象列表的状态发生变化?

其次,每个教程都说当你在本地保存少量数据时使用 shared_preferences,当你有更多数据时使用类似于本地文件的东西(我不需要数据库)。在这些方法之间进行选择时,“少量”数据是多少?几百个字符长的 Json 字符串仍然很小吗?几千个字符?

【问题讨论】:

存储几个字符?使用 shared_preferences。收藏小说?使用本地文件。他们之间的界线在哪里?这取决于你。至于什么时候,嗯,这也取决于你。选择一个感觉“正确”的时间。 (虽然不依赖于主 Scaffold 在应用程序关闭时发生这种情况,并且 Flutter 没有可靠的挂钩来处理这种情况,因此您开始的任何数据保存可能不会在应用程序关闭时完成,并且是操作系统收集的垃圾。) 【参考方案1】:

shared_preferences 主要用于存储短字符串,如名称或用户名,或布尔值,但即使 100 MB 也可以保存 JSON。只要您有足够的空间,它只会将文件保存到您的设备。但是你的意思是在你不在那个页面时保留数据,对吧?

我使用 bloc 将数据保存在继承小部件中,因此所有孩子都可以访问该数据。例如,注册页面,您可能有 4-5 个页面,并且需要每个页面中的每个数据进行注册。我所做的是在根目录下使用 bloc,将数据发送到该 bloc 并保存在内存中,用完后将其放入钱包

您可以在此处阅读更多详细信息 https://medium.com/@flutterhive/inheritedwidget-in-flutter-ffb64cc561dd

或者使用 bloc_provider https://pub.dev/packages/bloc_provider 如果您不想使用继承小部件

secure_storage 存储敏感数据,例如环境密钥

将数据存储在安全存储中的 Flutter 插件:

钥匙串用于 ios AES 加密用于 android。 AES 密钥使用 RSA 加密,RSA 密钥存储在 KeyStore 中 libsecret 用于 Linux。

【讨论】:

以上是关于选择何时何地在本地保存数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:何时何地首先加载实体?

依赖注入概念问题:在哪里实例化新对象以保存到数据库?

离线数仓

如何查看greenplum函数何时、何人、何地在数据库中创建的信息?

iOS 何时何地为视图控制器获取服务器数据

我用火狐的时候点击保存网页的时候,以前会出来一个选择保存路径的弹框,现在就没有了,