白加黑chris
白加黑chris
  • 发布:2024-11-17 20:51
  • 更新:2024-12-25 08:39
  • 阅读:159

【报Bug】OS设置自动启用深色模式,uniapp始终仅能取得light【已补hello-darkmode示例工程复现截图】

分类: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事件是一个辅助,启动的时候还得自己判断下当前的主题

  • 白加黑chris (作者)

    你好,应用是处于开启状态的。os的深色模式不管是否打开自动启用,都能收到通知,但是,在打开自动启用的情况下,应用收到的通知总是light。

    2024-11-18 08:54

白加黑chris

白加黑chris (作者) - hi

upup

白加黑chris

白加黑chris (作者) - hi

我再配图说明一下使用 hello-darkmode示例工程 复现该问题的步骤。

一、首次运行hello-darkmode 【表现正常】

此时系统尚未启用深色模式(见下图)

hello-darkmode显示当前主题为:auto (见下图)

二、设置自动启用深色模式,启用时间为11:20

三、保持hello-darkmode在后台运行,熄屏,直到11:20。

四、 11:20时,打开手机,打开hello-darkmode和微信,发现均未切换模式,可能均未获取到模式切换消息(这可能是系统的机制问题,再次熄屏,再次打开就会触发,此处不深究)

五、 再次熄屏,再次打开,发现微信已切到深色模式,hello-darkmode识别到模式却为light。【异常】

白加黑chris

白加黑chris (作者) - hi

以下再补充一个更简单的使用hello-darkmode示例工程的复现流程,实际就是楼上的复现的极简版。

一、打开系统深色模式的自动启用,并同时直接把深色模式启用。

二、下图获取到的主题始终为light

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

白加黑chris

白加黑chris (作者) - hi

请关注一下此问题,谢谢。

要回复问题请先登录注册