使用 Flutter 时我都有哪些存储数据的选项? (iOS和Android)[关闭]
Posted
技术标签:
【中文标题】使用 Flutter 时我都有哪些存储数据的选项? (iOS和Android)[关闭]【英文标题】:What are my options for storing data when using Flutter? (iOS and Android) [closed]使用 Flutter 时我有哪些存储数据的选项? (iOS和Android)[关闭] 【发布时间】:2018-12-18 14:43:33 【问题描述】:我还是 Flutter 环境的新手,在使用 Flutter 构建应用程序时很难找到有关存储选项的信息。
类似于has been asked for react native,我想知道我的选择是什么
数据持久性 远程或语言环境 离线行为(如果适用) 数据库安全 应用性能 定价 实时同步 与第三方库和 Flutter 模块的兼容性 还有什么...我搜索了flutter packages for database,但没有发现它很有帮助。任何答案、指南和参考将不胜感激。
【问题讨论】:
你试过 sqlite 了吗? 虽然问题写得很好,但它不属于所以没有有限的答案。这应该更多是中等帖子或类似帖子的主题。不是这样的问题。 像 react native 一样,可以使用 firebase。谷歌颤振火力基地。 好问题。我只对寻找颤振的 ORM 感兴趣,因为这将解决数据库问题。有了功能性 ORM,您就可以使用任何数据库。 我不能对评论投反对票,所以在文本中这样做 - 强烈反对 Rémi Rousselet。我认为 SO 是 询问“我的选择是什么”的正确位置。 OP 并不要求对“最佳”进行比较判断,而只是列出现在可用的内容以及性能等任何确凿事实。 【参考方案1】:我在 GitHub 上有一个开源项目,请务必查看 - A flutter project with Implementation of a Contacts app in 4 ways (API, Custom, Preferences and Sqflite).
在这个示例项目中,我使用了 4 种方式在 Flutter 中存储数据,如下所示 -
REST API -> (您可以将数据存储在服务器上并使用 REST API 执行 CRUD 操作)HTTP Package for REST APIs Integration in Flutter
首选项 -> (将您的数据存储在共享首选项中)Shared Preferences Package in Flutter
Sqlite -> (将您的数据存储在 SQLite 数据库中)Sqflite Package in Flutter
自定义 -> (将您的数据存储在临时对象中,但只能在应用运行时访问)【讨论】:
嗨,我怎样才能实现第四点,即将您的数据存储在临时对象中,但它只能在应用程序运行时访问任何示例? @VijayAnkith 检查以下 repo 的源代码 - github.com/harsh159357/contacts 休息 api。处理图片存储容易吗? @RokasDevolskis rest api 是存储图像的简单方法,但在我的示例项目中,我以 BLOB 方式进行(您可以将图像直接存储在数据库中的表中)。但我可能会建议您使用一些图像托管服务来存储图像,并使用该图像托管服务图像 url 保存在您的表中【参考方案2】:您可以将shared_preferences
用作React Native 异步存储的等效项,您可以阅读更多here。
sqflite
是让本地数据库离线使用的好方法。
您可以使用firebase 插件进行在线数据存储和同步。
【讨论】:
【参考方案3】:要存储大型数据库,您可以使用 here 中解释的 SQFlite Helper。
【讨论】:
【参考方案4】:我曾经在 Realm Xamarin 团队工作,目前正在 Xamarin Forms 应用和 Swift 应用中使用 Realm,所以当我开始思考 Flutter 时,我研究了它。
Realm 截至 2018-12 年不支持 Flutter,原因与任何其他基于 C 的数据引擎都会遇到困难的原因相同 - 根据 this issue,问题是 Flutter 支持不佳。
必要的第一步可能是Dart VM FFI issue。
有一个很长的 issue tracker thread 请求将其添加到 Realm 和 forum discussion。
不出所料,目前有 Firebase 和 SQLite 支持。
【讨论】:
以上是关于使用 Flutter 时我都有哪些存储数据的选项? (iOS和Android)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章