选择何时何地在本地保存数据[关闭]
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。
【讨论】:
以上是关于选择何时何地在本地保存数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章