uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
});
- 发布:2026-03-14 18:37
- 更新:2026-03-23 11:49
- 阅读:173
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 IoT 企业版 LTSC 24H2
HBuilderX类型: 正式
HBuilderX版本号: 5.03
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS 6.0.0
手机厂商: 华为
手机机型: nova 14
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
});
uni.onThemeChange( (res) => {
console.log('测试');
console.log(res);
});
预期结果:
手机切换"深色模式"时,执行输出提示:测试和res结果.
手机切换"深色模式"时,执行输出提示:测试和res结果.
实际结果:
手机切换"深色模式"时,uni.onThemeChange内代码未执行.每个页面都会报错:canIUse SystemCapability.Security.Huks.CryptoExtension supported is false
手机切换"深色模式"时,uni.onThemeChange内代码未执行.每个页面都会报错:canIUse SystemCapability.Security.Huks.CryptoExtension supported is false
x***@163.com (作者)
我想说的是手机切换"深色模式"时,uni.onThemeChange代码不执行的问题.不是主题适配问题.代码完全没变,这是升级最新版的鸿蒙系统后出现的问题.
这个错误 canIUse SystemCapability.Security.Huks.CryptoExtension supported is false 也是升级新版鸿蒙出再的问题.
你好,我使用 6.0.2.636 api 22 进行测试, 运行正常 , 看起来此内容并不影响 onThemeChange , 推荐您先通过 hello-darkmode示例项目运行
-
x***@163.com (作者)
onShow(() => {
uni.onThemeChange(({ theme }) => {
console.log('测试是否执行')
console.log('onThemeChange', theme)
})
});vue3这段代码在nova 14 真机上测试,这里面的代码,放在任何地方都不会执行.你们官放发布的"统一应用软件",在nova 14真机上,切换系统的"深色模式"时,也不能适配深色模式了.2026-03-24 09:34
欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
这个Bug反馈的内容基本完整,但存在关键信息缺失,且报错信息与功能问题可能存在混淆。以下是我的详细评审意见:
反馈内容完整性评价:
-
环境信息:提供了较完整的运行环境(HBuilderX 5.03正式版、HarmonyOS 6.0.0、Vue3),但缺少关键的manifest.json配置信息。根据知识库文档,App端使用暗黑模式需要在manifest.json中开启相关配置,反馈中未提及是否已配置
"darkmode": true。 -
代码示例:提供的代码示例过于简单,虽然能直接运行,但缺少上下文(如在哪个生命周期中调用、是否先判断了当前主题模式等)。
-
复现步骤:描述不够详细。仅提供代码未说明如何操作复现(如:是通过系统设置切换主题?还是期望启动时触发?)。根据知识库,uni.onThemeChange需要在系统主题切换时才会触发回调,启动时不会自动触发。
-
报错信息分析:反馈中提到的
canIUse SystemCapability.Security.Huks.CryptoExtension supported is false报错与uni.onThemeChange功能无直接关联,该报错指向鸿蒙系统的密钥管理(Huks)能力,可能是鸿蒙6.0.0.130版本的新限制或证书配置问题。这部分报错信息需要单独排查,不应与主题切换回调问题混为一谈。
Bug是否成立的判断:
根据知识库文档,HarmonyOS平台在HBuilderX 4.81-alpha版本已修复运行期间onThemeChange不触发的问题。用户使用的5.03版本理论上已包含该修复。
但需注意以下前提条件(来自知识库):
- App端需要开启暗黑模式,参考文档uni-app 暗黑模式
- 该回调仅在系统主题切换时触发,启动时不会触发
需要用户补充的信息:
-
请提供manifest.json中
harmonyos节点下的完整配置,确认是否已添加"darkmode": true配置。 -
请确认测试方式:是通过系统设置手动切换深色/浅色模式来测试的吗?还是在App启动时期望自动触发?(启动时不会触发,需监听系统切换)
-
关于
CryptoExtension报错,知识库中暂未找到相关信息,建议检查:- 鸿蒙项目的签名证书配置是否正常
- 是否在harmony-configs中配置了特殊的权限
- 该报错是否影响App正常启动(如不影响,可能是系统级别的能力检测,可暂时忽略)
建议的验证步骤:
建议先按照hello-darkmode示例项目验证功能是否正常。如果示例项目运行正常,请对比检查贵项目的manifest.json配置差异。
如确认配置无误仍无法触发,建议升级到最新的HBuilderX Alpha版本(当前知识库显示最新为5.02,但用户已使用5.03正式版)进行验证,或提供一个可复现的demo项目以便进一步排查。


DCloud_UNI_yuhe
你好,能够提供一下可以复现的项目吗?
2026-03-17 17:36
x***@163.com (作者)
回复 DCloud_UNI_yuhe:
uni.onThemeChange( (res) => {
console.log('测试');
});
这个全局监听代码,手机升级新版鸿蒙之后就不执行了.是真手机端,不是模拟器上.
uni.onThemeChange(function (res) {
console.log(res.theme);
});官网演示代码也一样不执行.
2026-03-18 20:52
DCloud_UNI_yuhe
回复 x***@163.com: 真机哪个 API 版本?模拟器哪个 API 版本?
2026-03-19 17:28
x***@163.com (作者)
回复 DCloud_UNI_yuhe: 真机:nova 14 harmony 6.0.0.130 (api:22),模拟器:harmony 6.0.0(api:20),uni.onThemeChange()这个监控函数都不执行.
2026-03-20 08:18
无双的英雄
回复 DCloud_UNI_yuhe: 这个问题我也能复现,也是cli项目没有修改任何样式代码,将CLI和HbuildX同时升级到最新的就能复现此问题。目前为了显示正常,把cli和HBuildX同时回退到去年的4.87版本可以暂时修复此问题。
2026-03-24 16:21
DCloud_UNI_yuhe
回复 无双的英雄: 请提供一下一个最简的可以复现的项目
2026-03-24 16:39
无双的英雄
回复 DCloud_UNI_yuhe: 用官方提供的示例项目,使用不同版本的HbuildX启动即可复现: https://ext.dcloud.net.cn/plugin?name=hello-darkmode
2026-03-24 16:50
DCloud_UNI_yuhe
回复 无双的英雄: 可以看下下面我昨天发布的截图, 尝试更新 deveco 版本
2026-03-24 18:46
无双的英雄
回复 DCloud_UNI_yuhe: 我用的真机实测而不是模拟器,这里移步说明:https://ask.dcloud.net.cn/question/218856
2026-03-24 22:50
x***@163.com (作者)
回复 无双的英雄: 我退回HBuildX 4.85 代码也能正常执行了.就是升级新版HBuildX 5.03带来的问题.无双的英雄:非常感谢!
2026-03-25 20:37
x***@163.com (作者)
回复 x***@163.com: 我更新到最新版HBuildX 5.0.5,还是一样的问题.代码不执行.只能退回到4.87了.
2026-03-25 21:21
无双的英雄
回复 x***@163.com: 新版有解决办法了,在App.vue页面增加代码 plus.nativeUI.setUIStyle('auto') ,然后一切正常了
2026-03-31 20:06