使用 Flutter sqflite 加载 JSON1 扩展

Jes*_*Wit 5 sqlite dart sqlite-json1 flutter

在我的 Flutter 应用程序中,我使用 sqflite 与本地数据库进行通信。我需要查看 JSON 数据。JSON1扩展非常适合此目的。但是,我无法在 Flutter 应用程序中加载该扩展以使其在我的查询中可用,因为该文档适用于 C,而不是 Dart。

  • 我应该在 iOS 和 Android 的不同架构中进行编译吗?
  • 编译后的文件应该放在哪里?我认为它没有作为资产添加。
  • 如何在我的 Flutter/Dart 代码中访问/加载 C 扩展?

也欢迎为 Flutter 提供其他良好支持的本地数据库(文档数据库或支持 JSON 查询的数据库)的建议。我研究了 Couchbase Lite,但插件(Fluttercouchcouchbase-lite-flutter)仍在开发中。

Ral*_*alf 2

默认情况下,sqflite使用操作系统提供的 SQLite 版本,该版本可能未启用 json1。

相反,请使用sqflite_ffi,这将随您的应用程序附带一份 SQLite 副本。任何最新版本都会自动包含 json1。

该过程解释如下:https://github.com/tekartik/sqflite/blob/master/sqflite_common_ffi/doc/using_ffi_instead_of_sqflite.md

要点是:

  1. 添加sqflite_common_ffisqlite3_flutter_libs依赖项(除了sqflite)。
  2. 在应用程序中sqfliteFfiInit()打开数据库之前调用。sqflite

另一个优点是 ffi 版本还具有更好的性能。