HarmonyOS鸿蒙Next中flutter里drift访问sqlite为什么不行
HarmonyOS鸿蒙Next中flutter里drift访问sqlite为什么不行 小白一个,代码都是ai写的。我查了网上说使用如下依赖就可以
sqlite3: ^2.4.0
sqlite3_flutter_libs: ^0.5.27
但是运行的时候报:FAILED: Unsupported operation: Unsupported platform: ohos
Flutter for OpenHarmony 实战:drift 响应式持久化存储数据库方案_flutter 的drift数据库-CSDN博客
这篇文章里也说可以,但是为啥我的不行呢
更多关于HarmonyOS鸿蒙Next中flutter里drift访问sqlite为什么不行的实战教程也可以访问 https://www.itying.com/category-92-b0.html
开发者您好,查看报错信息为不支持HarmonyOS平台。请使用sqlite3和sqlite_flutter_libs的HarmonyOS适配版本,引用方式参见:sqlite_flutter_libs,sqlite3。若替换后仍然无法解决问题,请提供替换HarmonyOS适配版本后的完整报错日志信息,方便问题分析解决。
更多关于HarmonyOS鸿蒙Next中flutter里drift访问sqlite为什么不行的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
这个问题主要不是 drift 的问题,而是 sqlite3 这个 Flutter 包目前对 OpenHarmony 平台支持不完整。
你加的:
sqlite3
sqlite3_flutter_libs
这套方案本质是:
Flutter → sqlite3 Dart封装 → 原生 SQLite 动态库
其中 sqlite3_flutter_libs 会根据平台加载对应的 sqlite 库,比如:
- Android → libsqlite.so
- iOS → 系统 SQLite
- Windows/Linux/macOS → 对应动态库
但是你的报错:
Unsupported platform: ohos
说明:
Flutter 判断当前平台是 ohos,但是 sqlite3_flutter_libs 里没有对应的 ohos 实现,所以直接拒绝运行。
希望能帮到你~~~
处理思路有三个:
-
查你使用的 Flutter for HarmonyOS 版本是否提供 sqlite3 的 ohos 适配包或示例,不要只按 Android Flutter 文档配。
-
如果要继续用 drift,需要准备 ohos 可加载的 sqlite native 库,并让 sqlite3 包能正确 openDynamicLibrary。
-
若只是普通本地存储,优先评估 HarmonyOS 原生 RDB/DataPreferences,再通过 platform channel 封装给 Flutter 调用。
pub.dev 上原版的 sqlite3和 sqlite3_flutter_libs,这两个包原生并不支持鸿蒙(ohos)平台。它们底层通过 dart:ffi调用 SQLite 原生动态库,在 FFI 绑定时只识别 Android、iOS、Linux、macOS、Windows 等平台,不包含 ohos 的平台识别逻辑,所以运行时直接抛出了 Unsupported platform: ohos。
你说的那篇 CSDN 文章能正常工作,估计是因为它不是直接用 pub.dev 的原版包,而是通过 dependency_overrides将底层依赖强制覆盖为社区已适配鸿蒙的版本吧
drift依赖sqlite3原生库,鸿蒙Next未提供兼容的native接口或FFI绑定,导致底层数据库操作失败。需使用鸿蒙适配的sqlite实现或更换数据库方案。
Unsupported operation: Unsupported platform: ohos 是因为 sqlite3 这个 Dart 包内部有平台判断,只认 android/ios/windows/macos/linux 这些,HarmonyOS Next 的 Flutter 会把平台识别为 ohos,不在支持列表里,所以直接抛异常。
你加的两个依赖只是把 sqlite3 的 Dart API 和原生库带进来,但 sqlite3 包本身还没有适配 ohos。那篇文章能跑通,是因为它不只加了依赖,还做了额外配置(比如 patch 或者手动加入 ohos 平台的原生桥接)。你如果只靠 pubspec 里那两行,原生库加载不了,自然就报这个错。
建议对照那篇博客里完整的配置步骤,重点看它有没有改 ohos 目录下的文件,或者有没有在 pubspec.yaml 里做 dependency_overrides。缺失了这些,光加依赖是不会有用的。
