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

标签 flutter dart serialization

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

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

我不确定我将如何保存到文件中,但我正在考虑使用 jsonDecode() 将其转换为字符串。 .

最佳答案

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

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

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

关于Flutter 在本地保存数据,共享首选项与保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61937877/

相关文章:

android - 在 package :html, dart :html, dart:io (class HttpClient) 和 package:http APIs 之间选择获取 HTTP 资源

vba - 如何将树结构写入磁盘(没有序列化的 VBA)

flutter - 在浅色主题中更改图标颜色没有任何影响

Flutter:如何在 TabBar 中禁用特定选项卡

flutter - 我在摄像头屏幕选项卡上时想隐藏应用程序栏和底部导航栏

debugging - 如何使用 IntelliJ Idea Community Edition 调试 Dart 客户端应用程序?

python - 泡菜替代品

c# - 分配多个 JsonProperties?

android - Flutter-在子孙中调用setState后重建父对象

validation - 表单验证错误消息未完全显示-Flutter