当前位置: 首页 > wzjs >正文

邯郸市今日防疫最疫情汕头seo排名公司

邯郸市今日防疫最疫情,汕头seo排名公司,成都b2c网站,做网站的可以信吗注:适用版本(Harmony OS NEXT / 5.0 / API 12 ) 一、效果展示 二、技术栈 HarmonyOS ArkUI框架 使用AppStorage实现跨组件状态管理,PersistentStorage持久化存储用户偏好。 系统配置常量 ConfigurationConstant.Color…

注:适用版本(Harmony OS NEXT / 5.0 / API 12+ )

一、效果展示

                                              

二、技术栈           

  1. HarmonyOS ArkUI框架

    使用AppStorage实现跨组件状态管理,PersistentStorage持久化存储用户偏好。
  2. 系统配置常量

    ConfigurationConstant.ColorMode定义系统支持的颜色模式(浅色/深色/未设置)。
  3. UIAbility上下文

    通过common.UIAbilityContext获取应用上下文,调用setColorMode同步系统级主题配置。
  4. TypeScript

    强类型定义(如ColorModeKey常量、泛型方法persistProp<T>)提升代码健壮性。
技术组件作用原理
PersistentStorage持久化存储键值对数据,适用于高频访问的小数据量场景底层使用轻量级数据库,以实现数据的持久化存储
AppStorage作为全局状态管理中心,支持组件数据的自动刷新采用发布 - 订阅模式,组件通过 @StorageLink 绑定数据,当数据更新时,绑定的组件会自动刷新
UIAbilityContext提供应用运行时的上下文信息,并允许修改系统级配置在应用运行时提供相关上下文信息,如 config.colorMode,同时具备修改系统级配置的能力
ConfigurationConstant提供系统常量,确保与HarmonyOS 原生行为一致

三、详细源码及分析

// 导入AbilityKit模块中的ConfigurationConstant和Context类
import { common, ConfigurationConstant, Context } from '@kit.AbilityKit'// 定义ColorModeKey常量,用于存储颜色模式的键值
export const ColorModeKey = 'hm_colorMode_key'// 定义Theme类,用于管理应用的主题
class Theme {// 初始化主题方法initTheme() {// 使用PersistentStorage持久化存储颜色模式,默认为浅色模式PersistentStorage.persistProp<ConfigurationConstant.ColorMode>(ColorModeKey,ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT)// 从AppStorage中获取当前的颜色模式const colorMode = AppStorage.get<ConfigurationConstant.ColorMode>(ColorModeKey)// 调用setTheme方法设置主题this.setTheme(colorMode!)}// 设置主题方法setTheme(model: ConfigurationConstant.ColorMode) {// 将颜色模式存储到AppStorage中AppStorage.setOrCreate(ColorModeKey, model)// 从AppStorage中获取上下文对象const ctx = AppStorage.get<Context>('context')AppStorage.setOrCreate('isDark',(ctx as common.UIAbilityContext).config.colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK)// 如果上下文对象存在,则设置应用的颜色模式if (ctx) {ctx.getApplicationContext().setColorMode(model)}}// 设置主题为未设置状态的方法noSet() {this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET)}// 设置主题为浅色模式的方法light() {this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT)}// 设置主题为深色模式的方法dark() {this.setTheme(ConfigurationConstant.ColorMode.COLOR_MODE_DARK)}
}// 导出Theme类的实例
export const theme = new Theme()

initTheme 方法        

  • 功能:对主题进行初始化操作。

  • 步骤

    • 运用 PersistentStorage.persistProp 方法把默认的颜色模式(浅色模式)持久化存储起来。

    • 从 AppStorage 中获取当前的颜色模式。

    • 调用 setTheme 方法来设置主题。

setTheme 方法

  • 功能:设置应用的主题。

  • 步骤

    • 把传入的颜色模式存储到 AppStorage 里。

    • 从 AppStorage 中获取上下文对象 ctx

    • 依据上下文对象的颜色模式,在 AppStorage 中设置 isDark 标志。

    • 若上下文对象存在,就调用 getApplicationContext().setColorMode 方法来设置应用的颜色模式。

noSetlight 和 dark 方法

  • 功能:分别把主题设置为未设置、浅色和深色模式。

  • 实现方式:调用 setTheme 方法并传入对应的颜色模式常量。

四、常见问题

  • 持久化存储未初始化

    • 现象:首次启动时主题未按预期加载。

    • 解决:确保initTheme()在应用启动时调用,且PersistentStorage.persistProp优先于其他逻辑。

  • 上下文获取失败

    • 现象ctxundefined,调用setColorMode报错。

    • 解决:检查AppStoragecontext是否正确注入,或通过getContext动态获取。

  • 颜色模式未同步

    • 现象AppStorage与系统实际模式不一致。

    • 解决:在setTheme中显式调用ctx.getApplicationContext().setColorMode(model),并监听系统配置变化。

  • 枚举值误用

    • 现象:错误使用COLOR_MODE_NOT_SET导致主题异常。

    • 解决:仅在需要系统默认行为时使用noSet(),通常应明确指定LIGHTDARK

  • 异步存储延迟

    • 现象:主题切换后界面未立即刷新。

    • 解决:使用@StorageLink装饰器绑定UI组件,或手动触发getUIAbilityContext().setColorMode()

五、总结

        通过合理封装 HarmonyOS 原生 API,开发者可以轻松实现动态主题管理功能。本文的 Theme 工具类提供了一套完整的解决方案,涵盖持久化存储、系统配置同步与常见问题规避。在实际开发中,建议结合业务需求扩展主题体系,并始终关注上下文有效性及状态同步的原子性。

http://www.dtcms.com/wzjs/242732.html

相关文章:

  • 用java做网站界面最近的新闻有哪些
  • 怎么制作移动端网站视频外链平台
  • 有关建筑的网站兰州seo外包公司
  • 电商网站的二级菜单怎么做网站站长seo推广
  • 企查查官网查企业seo是付费还是免费推广
  • 网站项目经费预算西安seo网站优化
  • 怎么做有趣的短视频网站湖南关键词网络科技有限公司
  • 德清网站建设石家庄关键词优化平台
  • sever 2008 网站建设优化 seo
  • 随州网站制作新闻播报最新
  • 创建网站需要多少钱百度霸屏推广靠谱吗
  • 郑州大学科技园手机网站建设公司官网优化方案
  • 有没有免费做网站的黑帽seo培训
  • 儋州网站设计公司百度中心
  • 网站定制开发要多少钱下载百度2023最新版安装
  • 网站建设项目验收付款百度手游app下载
  • 快递网站建设网络快速排名优化方法
  • 文化体育局网站建设北京做百度推广的公司
  • 长宁网站制作优化大师手机版
  • 太原网页设计培训学校seo搜索引擎优化入门
  • 遵义公司网站搭建多少钱磁力吧ciliba
  • 网站建设实训步骤白帽seo公司
  • 网站子目录是什么意思网站优化公司
  • 免费正能量软件下载移动端关键词优化
  • 如何确认建设银行网站不是假的阿里网站seo
  • 做带后台的网站收录情况
  • 发布广东建设工程信息网站谷歌 google
  • b2b国际贸易商务网站广州网站推广服务
  • 做网站需要ui设计吗宁波优化seo软件公司
  • 网站建设的任务设计公司排名