HarmonyOS鸿蒙Next中使用sqlcipher_flutter_libs库的Platform.isOhos方法运行出现报错

HarmonyOS鸿蒙Next中使用sqlcipher_flutter_libs库的Platform.isOhos方法运行出现报错 报错如下:

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: NoSuchMethodError: No static getter ‘isOhos’ declared in class ‘null’.

Receiver: null

Tried calling: isOhos

#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:173:5)

#1 checkPlatform (package:lung_flutter/main.dart:31:29)

#2 main (package:lung_flutter/main.dart:15:3)

#3 _runMain.<anonymous closure> (dart:ui/hooks.dart:319:23)

#4 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:314:19)

#5 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:193:12)

环境信息:

contec@bogon lung_flutter_ohos % flutter-ohos --version

Flutter 3.35.8-ohos-1.0.1 • channel [user-branch] • unknown source

Framework • revision a82fc2f1e0 (13 days ago) • 2026-05-21 17:14:08 +0800

Engine • hash 6b24e1b529bc46df7ff397667502719a2a8b6b72 (revision 035316565a) (7 months ago) • 2025-10-21 14:28:01.000Z

Tools • Dart 3.9.2 • DevTools 2.48.0

三方库版本为:

dependencies:
  sqlcipher_flutter_libs:
    git:
      url: https://gitcode.com/flutter_ohos_plugin/sqlcipher_flutter_libs.git
      ref: br_ohos
      path: legacy/sqlcipher_flutter_libs

更多关于HarmonyOS鸿蒙Next中使用sqlcipher_flutter_libs库的Platform.isOhos方法运行出现报错的实战教程也可以访问 https://www.itying.com/category-92-b0.html

5 回复

推荐看下:https://harmonyosdev.csdn.net/68034e14e47cbf761b5d0ac3.html 这篇博文。

这个报错基本可以确定是 Platform.isOhos 当前版本不支持 导致的,不是你代码逻辑的问题。

错误里的关键是:

No static getter 'isOhos' declared in class 'null'

说明运行时去找:

Platform.isOhos

但当前 Flutter OHOS SDK 里并没有这个属性,所以直接抛异常了。

建议改成官方推荐写法:

import 'package:flutter/foundation.dart';

bool isOhos() {
  return defaultTargetPlatform == TargetPlatform.ohos;
}

或者:

if (defaultTargetPlatform == TargetPlatform.ohos) {
  <em>// HarmonyOS逻辑</em>
}

不要再使用:

Platform.isOhos

这个写法在不少 Flutter OHOS 版本里都有兼容问题,社区和官方适配资料也都建议改成 defaultTargetPlatform == TargetPlatform.ohos

如果你的代码里是:

import 'dart:io';

if (Platform.isAndroid || Platform.isOhos) {
}

建议改成:

import 'package:flutter/foundation.dart';

if (defaultTargetPlatform == TargetPlatform.android ||
    defaultTargetPlatform == TargetPlatform.ohos) {
}

另外你用的是:

Flutter 3.35.8-ohos-1.0.1

属于比较新的版本,如果这里还报错,基本可以排除版本太老的问题,更像是 SDK 本身就没有提供 Platform.isOhos 这个扩展。

希望能帮到你~~~

更多关于HarmonyOS鸿蒙Next中使用sqlcipher_flutter_libs库的Platform.isOhos方法运行出现报错的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


这不就是说你的 flutter-ohos 版本不支持 Platform.isOhos 嘛。写了 No static getter ‘isOhos’ declared in class ‘null’ 的。建议避免直接使用 Platform.isOhos。

一般来说项目需要在鸿蒙 Flutter 和官方 Flutter 之间切换开发的,要避免使用 Platform.isOhos,改用 defaultTargetPlatform == TargetPlatform.ohos 或 Platform.operatingSystem == ‘ohos’

这个也是官方推荐的

什么报错

sqlcipher_flutter_libs 库尚未对 HarmonyOS NEXT 进行适配,其 Platform.isOhos 方法内部调用的底层接口在 NEXT 版本中已变更或缺失,导致运行时报错。需等待该库发布兼容 NEXT 的版本。

该错误是因为当前使用的 Dart/Flutter 环境中,Platform 类并未提供 isOhos 这个静态 getter。HarmonyOS 特化版 Flutter 中,平台判断应通过 Platform.operatingSystem 字符串进行,而不是 isOhos。你的代码直接调用 Platform.isOhos,在运行时找不到该方法,所以抛出 NoSuchMethodError

替换为 Platform.operatingSystem == 'ohos' 即可解决。记得确保已导入 dart:io。此外,sqlcipher_flutter_libs 库的 ohos 分支与 Flutter ohos 工具链兼容,不依赖该 getter,因此改动后运行正常。

回到顶部