以下场景仅在两台手机(Android 10 + MIUI 12 和 Android 11 + MIUI 12.5)上测试过,其他机型不确定。
文档是都有提到深色模式的用法,但我觉得场景限定得太死。比如:
app.json[darkmode] = false 限制了小程序窗体颜色自动变换,onThemeChange的变换回调,getSystemInfo[theme]当前主题的返回。
app.json[darkmode] = true 则在手动切换或某些系统提供了定时切换主题模式后,会导致正在运行的小程序重载(重启),导致小程序的一些操作和数据丢失。
问题在现在的限制下,业务上是希望能适配主题的切换但又不想小程序重新加载,我想到的办法是WXSS使用媒体查询 prefers-color-scheme + onThemeChange中修改窗体颜色。问题是小程序不重载要求app.json[darkmode]为false,但这不会触发onThemeChange回调,getSystemInfo[theme]也没有返回。
我觉得onThemeChange和getSystemInfo可以不依赖darkmode的设置值。
此外,即使配置了darkmode为true,切换主题后因为小程序重载了,且onThemeChange不会触发?那这个功能真是鸡肋。