HarmonyOS鸿蒙Next Flutter优化库:shared_preferences_ohos
HarmonyOS鸿蒙Next Flutter优化库:shared_preferences_ohos 【问题描述】:使用shared_preferences_ohos库的时候报错了:

https://gitcode.com/openharmony-tpc/flutter_packages/issues/1103 有issue,issue里也有解决方法,但是没人合代码,希望能优化下
更多关于HarmonyOS鸿蒙Next Flutter优化库:shared_preferences_ohos的实战教程也可以访问 https://www.itying.com/category-92-b0.html
开发者您好,需要您提供如下信息:请问您是在什么样的业务场景中使用该能力(shared_preferences_ohos库),交互流程是怎样的,在哪一个环节遇到了问题?方便说明能力不满足可能带来的影响:什么时间用到?是否高频?有无三方库可以做到?若提供该能力,是否会造成大工作量返工?请您注意提供的内容不要包含您或第三方的非公开信息,如给您带来不便,敬请谅解。
更多关于HarmonyOS鸿蒙Next Flutter优化库:shared_preferences_ohos的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1. 问题背景
-
标题:
Flutter优化库:shared_preferences_ohos表明这是针对 OpenHarmony 系统适配的 Flutter 优化库(
shared_preferences_ohos)的问题。 -
问题描述:
使用
shared_preferences_ohos库的时候报错了说明在集成或调用该库时触发了运行时错误。
2. 依赖配置示例
图片中展示了 pubspec.yaml 中的 依赖配置代码块:
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
- 关键信息:
- 通过 Git 方式 引入
shared_preferences库(非 Pub 仓库)。 - 仓库地址指向 OpenHarmony 社区的 Flutter 代码仓库(
openharmony-tpc)。 - 使用的分支是
br_shared_preferences-v2.5.4_ohos,说明是 OpenHarmony 适配分支(非标准 Flutter 版本)。
- 通过 Git 方式 引入
3. 报错详情
- 错误日志:
static members of SharedPreferencesApi
exception = (RangeError) RangeError (length): Invalid value: Valid value range is empty: 0
- 错误分析:
- 错误类型:
RangeError(范围错误)。 - 具体原因:
length参数的值为0,但当前上下文要求长度必须在 非空的有效范围 内(例如:尝试访问空列表的索引、初始化空数据结构时传入无效长度等)。 - 可能场景:
在调用
shared_preferences的 API 时,传入了空数据或未正确初始化数据结构(例如:读取空键值、解析空字符串为列表等)。
- 错误类型:
4. 社区反馈与现状
-
关联 Issue 链接:
https://gitcode.com/openharmony-tpc/flutter_packages/issues/1103 -
说明:
有 issue,issue 里也有解决方法,但是没人合代码,希望能优化下
- 该问题已在 OpenHarmony 社区的 Flutter 仓库中被报告(Issue #1103)。
- 社区现状: 虽有解决方案,但 未被官方合并到主分支,导致开发者仍需自行处理。
5. 问题本质总结
-
核心矛盾:
shared_preferences_ohos是 OpenHarmony 适配的 Flutter 库,但其分支版本(v2.5.4_ohos)存在兼容性问题,导致运行时触发RangeError。 -
根本原因:
- 可能是库的代码逻辑未处理边界条件(如空数据场景)。
- 也可能是 OpenHarmony 系统与标准 Flutter 的差异导致 API 行为不一致。
建议行动方向
-
检查数据初始化: 确保在调用
shared_preferences前,键值对已正确写入(避免读取空值)。 -
参考 Issue 解决方案: 查看 Issue #1103 中的临时修复方法(如修改本地库代码)。
开发者您好,问题正在处理中,请耐心等待。
shared_preferences_ohos 是专为 HarmonyOS Next 优化的 Flutter 插件,替代原 shared_preferences,使用 HarmonyOS 的 Preferences 数据库实现键值存储。它支持同步/异步读写,自动处理鸿蒙 Next 的线程模型与生命周期,减少适配代码。仅需添加依赖并替换 import 路径,性能优于原生桥接方案。
该问题已有社区贡献者在 issue 中提供了修复代码,可通过在本地 shared_preferences_ohos 插件源码中应用补丁解决。如果项目允许,可 Fork 该库并手动合入补丁,再以本地依赖方式引入。涉及修改通常集中在 ohos/entry/src/main/ets/ 下的插件实现文件(如 PreferencesPlugin.ets),修正存储键的序列化或路径兼容逻辑。相关修复已提 PR,等待维护者合并;在此期间可临时使用本地修改版本。

