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

3 回复

已确认这个问题,现提供一个临时解决方案:
在 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和生命周期)都是正确的,但在鸿蒙系统下无法触发回调。这属于平台兼容性问题,建议:

  1. 临时解决方案:通过监听应用前后台切换,在onShow中手动检查当前主题
onShow() {
    const systemInfo = uni.getSystemInfoSync();
    console.log('当前主题:', systemInfo.theme);
}
回到顶部