Files
wx_pbzc/utils/darkMode.js
T
lc 1eff3d60c4 fix(ui): 多项 UI 修复 — 弹窗遮挡/按钮可见性/暗黑闪烁/云函数版本
- 计划编辑弹窗移出 .container 避免 fixed 降级 + 修复滚动
- dock bottom 40rpx→8rpx 紧贴底部, sheet padding 同步调整
- 计划编辑器取消/恢复默认按钮可见性修复(bg 匹配容器)
- ui-btn--danger 按钮可见性修复
- 清除确认弹窗跟随暗黑模式切换
- icons.js build() 中 Fill 路径覆盖 outlined 路径修复
- plan.js getPlanDay 忽略 customPlans 修复
- darkMode.js 冗余三元简化
- util.js fileToDataURI fallback 可读性提升
- theme.js: BASE_VARS 与 getThemeStyle 统一来源, 去 50ms navbar 延迟
- app.wxss: 移除 page transition 和 background-color 减少闪白
- 云函数 wx-server-sdk 版本统一 ~2.6.3, tts cloud.init 一致化
- 闪白问题: wx.setBackgroundColor 三层防护(onLaunch/applyThemeToPage/switchTab)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-10 09:40:04 +08:00

50 lines
1.0 KiB
JavaScript

/**
* 系统深色模式监听 — 提供初始值与变更回调
* 旧设备 wx.onThemeChange 失败时退化为只读一次
*/
const STORAGE_KEY = 'dark_mode_pref'
function _readSystemTheme() {
try {
const info = wx.getSystemInfoSync()
return info.theme === 'dark'
} catch (e) {
return false
}
}
function getInitialDarkMode() {
const pref = wx.getStorageSync(STORAGE_KEY) || 'system'
if (pref === 'system') return _readSystemTheme()
return pref === 'dark'
}
function getPref() {
return wx.getStorageSync(STORAGE_KEY) || 'system'
}
function setPref(value) {
if (!['system', 'light', 'dark'].includes(value)) return
wx.setStorageSync(STORAGE_KEY, value)
}
function watchDarkMode(onChange) {
if (typeof wx.onThemeChange !== 'function') return
try {
wx.onThemeChange(({ theme }) => {
const pref = getPref()
if (pref === 'system') onChange(theme === 'dark')
})
} catch (e) {
// 旧设备不支持,忽略
}
}
module.exports = {
getInitialDarkMode,
getPref,
setPref,
watchDarkMode
}