深色模式的切换导致小程序重载
发布于 4 年前 作者 xiulan38 11309 次浏览 来自 问答

以下场景仅在两台手机(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不会触发?那这个功能真是鸡肋。

1 回复

ios 切换深色模式不会重新加载;安卓切换是对齐微信切换深色模式会重新加载;

回到顶部