HarmonyOS鸿蒙Next中flutter适配时提示shared_preferences未实现
HarmonyOS鸿蒙Next中flutter适配时提示shared_preferences未实现 请问,先确认一下,Harmony没有实现Flutter的shared_preferences插件吗?
如果是,有没有成熟的解决办法?
pubspec.yaml:
shared_preferences: ^2.5.5
鸿蒙版Flutter版本:
mulati@qiredeMacBook-Air ~ % flutter --version
Flutter 3.35.8-ohos-0.0.3 • channel [user-branch] • https://gitcode.com/openharmony-tpc/flutter_flutter.git
Framework • revision 65945d033b (7 天前) • 2026-03-27 18:15:44 +0800
Engine • hash 6b24e1b529bc46df7ff397667502719a2a8b6b72 (revision 035316565a) (5 months ago) • 2025-10-21 14:28:01.000Z
Tools • Dart 3.9.2 • DevTools 2.48.0
报错Flutter代码:
debugPrint('sp - before');
try
{
final sp = await SharedPreferences.getInstance();
debugPrint('sp start');
int? value = sp.getInt('sp');
if (value == null)
{
_sp = 0;
}
else
{
_sp = value + 1;
}
sp.setInt('sp', _sp);
debugPrint('sp=$_sp');
}
catch(e)
{
debugPrint('sp - catch:$e');
}
debugPrint('sp - after');
这段代码代码的输出:
04-02 18:26:52.223 22490 22490 W A00000/XComFlutterOHOS_Native: flutter settings log message: sp - before
The Flutter DevTools debugger and profiler on 127.0.0.1:5555 is available at: http://127.0.0.1:9102?uri=http://127.0.0.1:60321/
04-02 18:26:52.347 22490 22490 W A00000/XComFlutterOHOS_Native: flutter settings log message: sp - catch:MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
04-02 18:26:52.348 22490 22490 W A00000/XComFlutterOHOS_Native: flutter settings log message: sp - after
补充: 刚才在这里的已支持插件列表中: https://gitcode.com/openharmony-tpc/flutter_packages/blob/master/README.md#packages
看到了shared_preferences,已支持版本有2.5.3,2.5.4。在上面用的是2.5.5。 于是,改成已支持的版本。但是,结果还是一样。
更多关于HarmonyOS鸿蒙Next中flutter适配时提示shared_preferences未实现的实战教程也可以访问 https://www.itying.com/category-92-b0.html
如下引用后,可以了:
shared_preferences:
git:
url: https://gitcode.com/openharmony-tpc/flutter_packages.git
path: packages/shared_preferences/shared_preferences
ref: br_shared_preferences-v2.5.4_ohos
更多关于HarmonyOS鸿蒙Next中flutter适配时提示shared_preferences未实现的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
鸿蒙Next中flutter的shared_preferences插件暂未适配。该插件依赖的Android平台代码在鸿蒙上无法直接运行。目前需要等待官方或社区完成鸿蒙平台的适配工作,或寻找替代的本地存储方案。
是的,目前HarmonyOS Next的鸿蒙版Flutter(OpenHarmony TPC分支)尚未原生实现 shared_preferences 插件的鸿蒙平台(ohos)适配。你遇到的 MissingPluginException 错误正是由于插件在鸿蒙平台上缺少对应的原生实现代码(MethodChannel 在 ohos 端未注册)导致的。
虽然官方插件列表中提到已支持 shared_preferences,但实际支持状态可能滞后于主干版本或存在实现不完整的情况。根据你的测试,即使降级到列表中的“已支持”版本(2.5.3/2.5.4),问题依旧,这证实了当前鸿蒙版Flutter引擎或插件适配包中确实缺失该功能。
当前可行的成熟解决方案:
-
使用鸿蒙原生偏好设置接口进行桥接:这是最稳定、性能最佳的方式。你需要创建一个鸿蒙原生(ArkTS)模块,使用
@ohos.data.preferences能力实现数据的持久化存储。然后,通过 Flutter 的 Platform Channel(MethodChannel)在 Dart 代码与这个原生模块之间建立通信。你的 Flutter 代码通过 Channel 调用原生方法来完成数据的读写操作。 -
寻找或开发社区适配插件:关注 OpenHarmony TPC 的 flutter_packages 仓库,等待官方更新完整的
shared_preferences_ohos实现。或者,在开源社区(如 Gitee)中寻找是否有第三方开发者已经提供了可用的适配版本。你也可以基于官方 Flutter 插件的代码,自行实现 ohos 平台的原生部分并发布。 -
使用纯 Dart 的存储方案作为临时替代:如果存储的数据结构简单、数据量小,可以考虑使用
flutter_secure_storage(如果其鸿蒙适配可用)或纯 Dart 的文件操作(如dart:io配合path_provider获取目录,但需注意path_provider本身的鸿蒙适配状态)来暂时替代。但这并非对shared_preferencesAPI 的直接替代,需要修改业务代码。
建议的优先行动路径:
鉴于你已在使用鸿蒙版Flutter进行开发,方案1(自行通过 Platform Channel 桥接)是目前最可控、能立即实施的方案。你需要编写 ArkTS 侧的偏好设置管理类,并在 Flutter 侧封装对应的服务类来调用。这虽然引入了额外的桥接代码,但能确保功能在 HarmonyOS Next 上稳定运行,且与系统偏好设置行为保持一致。可以查阅鸿蒙应用开发文档中关于 @ohos.data.preferences 的使用指南以及 Flutter 官方关于 Platform Channel 集成的文档来着手实现。

