import { common, ConfigurationConstant } from '@kit.AbilityKit'
// 设置键值
export const ThemeStoreKey = 'theme-key'
class Theme {
setTheme(colorMode:ConfigurationConstant.ColorMode) {
AppStorage.set<ConfigurationConstant.ColorMode>(ThemeStoreKey,colorMode)
let ctx = AppStorage.get<Context>('context')
if (ctx) {
ctx.getApplicationContext().setColorMode(colorMode)
}
// 设置当前应用采用的颜色(普通+深色)跟着设置改变
const isDark = (ctx as common.UIAbilityContext).config.colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK
AppStorage.setOrCreate('isDark', isDark)
}
// 1. 初始化主题(根据你设置保存的主题模式,设置当前应用的主题模式)
initTheme() {
// 约定用户设置的主题模式需要持久化存储,约定的值:ConfigurationConstant.ColorMode,默认普通模式
PersistentStorage.persistProp<ConfigurationConstant.ColorMode>(ThemeStoreKey,
ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT)
// 用户设置的主题
const colorMode = AppStorage.get<ConfigurationConstant.ColorMode>(ThemeStoreKey)
// 设置应用的主题
// const ctx = AppStorage.get<Context>('context')
// if (ctx) {
// ctx.getApplicationContext()
// .setColorMode(colorMode)
// }
this.setTheme(colorMode!)
}
// 2. 设置跟随系统主题
notSet() {
this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET)
}
// 3. 设置普通模式
light() {
this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT)
}
// 4. 设置深色模式
dark() {
this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_DARK)
}
}
export let theme = new Theme()
鸿蒙 HarmoryOS 主题设置封装
于 2024-09-14 21:44:38 首次发布