You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter的Sqflite插件中加载SQLite的json1扩展

Flutter 2.0.6搭配sqflite 2.0.0+3启用SQLite json1扩展解决方案

你当前使用的SQLite 3.28.0本身已经内置json1扩展,无需额外加载扩展文件,无法使用相关函数的核心原因是sqflite插件编译时未开启JSON1功能的编译选项,可通过以下方案解决:

方案1:降级sqflite到兼容版本

1.2.1版本的sqflite默认开启了JSON1编译选项,无需额外配置即可直接使用json_object()、json_group_array()等函数,适配步骤如下:

  • 打开项目根目录的pubspec.yaml文件,修改sqflite依赖版本:
    dependencies:
      sqflite: 1.2.1
    
  • 执行命令flutter pub get更新依赖
  • 清理项目缓存后重新构建即可生效

方案2:高版本sqflite自定义编译参数

如果不想降级sqflite版本,可以分别给安卓、iOS端添加编译参数开启JSON1支持:

安卓端配置

  • 打开android/app/build.gradle文件,在defaultConfig块中添加如下配置:
    ndk {
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
    }
    packagingOptions {
        pickFirst 'lib/x86_64/libsqlite3x.so'
        pickFirst 'lib/arm64-v8a/libsqlite3x.so'
        pickFirst 'lib/armeabi-v7a/libsqlite3x.so'
    }
    
  • 打开android/gradle.properties文件,添加全局编译参数:
    sqflite.sqliteFlags=-DSQLITE_ENABLE_JSON1=1
    
  • 重新构建安卓项目即可

iOS端配置

  • 打开ios/Podfile文件,添加post_install钩子配置:
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        if target.name == 'sqflite'
          target.build_configurations.each do |config|
            config.build_settings['OTHER_CFLAGS'] ||= ['$(inherited)']
            config.build_settings['OTHER_CFLAGS'] << '-DSQLITE_ENABLE_JSON1'
          end
        end
      end
    end
    
  • 进入ios目录执行命令pod install更新依赖配置
  • 重新构建iOS项目即可

方案3:使用sqflite_common_ffi替代原生sqflite

如果上述配置都不生效,可以使用基于FFI实现的sqflite版本,默认开启所有SQLite扩展功能,适配成本极低:

  • 修改pubspec.yaml依赖:
    dependencies:
      sqflite_common_ffi: ^2.0.0
    
  • 在应用入口初始化FFI实现,原有数据库操作代码无需任何修改:
    import 'package:sqflite_common_ffi/sqflite_ffi.dart';
    
    void main() {
      // 初始化sqflite FFI实现
      sqfliteFfiInit();
      databaseFactory = databaseFactoryFfi;
      runApp(YourApp());
    }
    

功能验证

配置完成后可以执行测试SQL确认功能生效:

var result = await db.rawQuery("SELECT json_object('id', 1, 'name', 'test') as json_res");
// 正常返回 [{json_res: {"id":1,"name":"test"}}] 即说明配置成功

内容的提问来源于stack exchange,提问作者Tom Shen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 16:36:03