1eff3d60c4
- 计划编辑弹窗移出 .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>
50 lines
1.0 KiB
JavaScript
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
|
|
}
|