Flutter 在本地保存数据,共享首选项与保存到文件

ali*_*eed 2 serialization dart flutter

我正在构建一个日历应用程序,为此我需要在本地保存数据。数据采用Map<DateTime,List<dynamic>>.

我正在考虑为 Flutter 使用 SharedPreferences 插件,但在 pub.dev 上它说“两个平台都不能保证在返回后将写入持久化到磁盘,并且该插件不得用于存储关键数据。” 所以我很犹豫要不要使用它。将数据存储到 SharedPreferences 比将其保存到文件有什么优势吗?

我不确定我将如何保存到文件中,但我正在考虑使用jsonDecode().

Ben*_*Tan 5

SharedPreferences 通常主要用于设置等。它最有可能工作,但性能不会很好(如果这是一个问题)。您的数据可能会被很好地存储,但正如 pub.dev 上所说,不能保证。SharedPreferences 的好处是您的数据可以在您的应用程序中的任何地方以一种易于访问的方式提供。

保存到文件也可以,但您必须记住,您保存在 AppDirectory 中的文件也不是 100% 不会被删除。设备操作系统可以随时清除这些文件。同样,可能不会成为问题,但我想我会提到它。

通常对于设备存储,我建议使用 sqflite ( https://pub.dev/packages/sqflite )。它使用起来非常简单,并为您的数据提供最佳性能和“安全性”。