白加黑chris
白加黑chris
  • 发布:2024-11-17 20:51
  • 更新:2024-11-17 22:45
  • 阅读:24

【报Bug】OS设置自动启用深色模式,uniapp始终仅能取得light

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 4.29

手机系统: Android

手机系统版本号: Android 10

手机厂商: zte

手机机型: 中兴远航10 5G

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

1、manifest.json里已配置app-plus节点下的darkmode为true
2、onLaunch里监听theme:

uni.onThemeChange((res)=>{  
    const {osTheme , theme} = uni.getSystemInfoSync()  
    uni.showModal({  
        content:`onThemeChange res.theme=${res.theme} ; systemInfo.osTheme=${osTheme}  ; systemInfo.theme=${theme}`  
    })  
})  

3、index里设置暗黑模式为跟随系统:

plus.nativeUI.setUIStyle('auto')  

4、运行含有上述程序的APP后,返回OS桌面。
5、在操作系统的「设置-显示」里,设置深色模式为自动启用。
6、在保持深色模式自动启用的同时,点击“立即启用” 或者 调整系统时间使之临近预设的启用时间。
7、待确认OS已切换到深色模式后,返回APP,观察showModal弹出的内容,查看onThemeChange的回调参数里的theme 和 此时通过getSystemInfoSync获得的osTheme、theme是否与实际情况一致。

预期结果:

取值应为dark,且showModal的弹窗应为深色风格。

实际结果:

取值实为light,且showModal的弹窗仍为浅色风格。

bug描述:

测了android10、android14,在设置了plus.nativeUI.setUIStyle('auto')之后,发现:

当设置OS的深色模式为自动启用时,再手动切换浅色/深色模式或者待OS成功自动启用深色模式,uniapp通过uni.onThemeChange取得的theme值 或 通过uni.getSystemInfo取得的osTheme、theme值始终为light,且原生界面也无法如期切换到暗黑模式。

若不设置OS的深色模式为自动启用,则上述取值是正常的。

2024-11-17 20:51 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

os的主题触发change的时候,你的应用处于开启状态吗?
如果此时你的应用并未开启,那肯定接受不到通知,等你再启动就晚了。
change事件是一个辅助,启动的时候还得自己判断下当前的主题

要回复问题请先登录注册