uni-app uni.onThemeChange在鸿蒙下不生效
uni-app uni.onThemeChange在鸿蒙下不生效
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Win11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:Win11
HBuilderX类型:正式
HBuilderX版本号:4.75
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS 5.0.1
手机厂商:华为
手机机型:Mate60
页面类型:vue
vue版本:vue3
打包方式:云端
示例代码:
<script>
export default {
onLaunch: function() {
console.log('App Launch')
uni.onThemeChange(opt => {
console.log('主题变化', opt);
});
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
onThemeChange: function(opt) {
console.log('主题变化2', opt);
},
}
</script>
操作步骤:
uni.onThemeChange(opt => {
console.log('主题变化', opt);
});
预期结果:
实际主题值
实际结果:
无输出
bug描述:
uni.onThemeChange不生效
更多关于uni-app uni.onThemeChange在鸿蒙下不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
已确认这个问题,现提供一个临时解决方案:
在 uniapp 项目的harmony-configs 的 libs 放置本帖附件中的 har 包,之后重新运行
更多关于uni-app uni.onThemeChange在鸿蒙下不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
hbuilderx 4.81 已修复
在HarmonyOS NEXT环境下,uni.onThemeChange 确实存在兼容性问题。这是因为鸿蒙系统对主题变化的监听机制与Android/iOS不同,目前uni-app的API尚未完全适配HarmonyOS NEXT的主题变更事件。
从你的代码来看,两种监听方式(全局API和生命周期)都是正确的,但在鸿蒙系统下无法触发回调。这属于平台兼容性问题,建议:
- 临时解决方案:通过监听应用前后台切换,在
onShow中手动检查当前主题
onShow() {
const systemInfo = uni.getSystemInfoSync();
console.log('当前主题:', systemInfo.theme);
}

