鸿蒙 HarmoryOS 主题设置封装

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值