AI取名大师 | uni-app + Wot UI 跟随设备自动切换明暗主题

关于 AI 取名大师

借助豆包通义千问DeepSeek 等 AI 大模型,为您的宝宝、宠物、店铺、网名、笔名、项目、产品、服务、文章等取一个专业、有意义的名字😄。


开源地址:👉GitCode(国内友好)👈、👉GitHub👈

技术组合:Bun.jsElysia.jsuni-app

体验地址:AI取名大师(H5版)

特别注明:本系列文章仅为实战经验分享,并记录开发过程中碰到的问题😄,如有不足之处欢迎随时留言提出。


📣 问题简述

运行程序时,偶尔会碰到明亮、暗黑主题错乱的问题(如下图),要么是背景 light 而组件 dark,或者是背景 dark 而组件 light,非常影响视觉效果😂。

🤔 原因分析

程序使用 pinia 状态库记录是否启用暗黑主题,参考的是 snail-uni 模板 的做法。

js 复制代码
export const useUIStore = defineStore('ui', {
    state:()=>({
        dark: false
    }),
    actions: {
        setDark (v){
            if(this.dark == v)  return

            this.dark = v
        }
    },
    unistorage: true
})

整体流程如下:

  1. 应用 onLaunch:通过 uni.onThemeChange 监听主题变更以更新状态库的 dark
  2. 页面根据dark的值设置明暗主题
  3. dark 值变动后页面也跟着变换主题

这看起来是很正常的一个逻辑,但是在以下情况就出问题了:

  1. 状态库dark的值是true
  2. 系统的外观为浅色
  3. 此时打开页面就会出现:背景浅色而组件深色😔
  4. 反之就是背景深色而组件浅色

究其原因就是页面加载时没有判断dark的值与当前系统外观是否一致。

🛠️ 修复

找到原因后,我们对症下药:页面加载后直接更新外观值,而不仅限于uni.onThemeChange

js 复制代码
// App.vue
<script setup>
    import { updateToken } from '@U'
    import { useUIStore, useDataStore } from '@/store'

    const uiStore = useUIStore()
    const dataStore = useDataStore()

    const updateTheme = ({ theme }) => {
        uiStore.setDark(theme == 'dark')
    }

    onLaunch(() => {
        const info = uni.getSystemInfoSync()
        let theme = info.osTheme || info.hostTheme
        updateTheme({ theme })

        uni.onThemeChange(updateTheme)
    })
</script>

在页面中使用:

html 复制代码
<template>
    <view :class="{ 'wot-theme-dark': uiStore.dark }" :style="style">
    </view>
</template>

<script setup>
		import { useUIStore } from '@/store'
		const uiStore = useUIStore()
</script>

❓ 扩展思考

经过上面的调整,能够实现随系统自动切换外观配色,那有没有可能由用户自己选择吗?

目前还没有想到好的解决办法,因为出现应用与系统外观不一致的话,就会复现上面的问题😔。我观察了下,主流的 uni-app 模板也都是跟随系统。

如果各路大神有好的思路请留言😄。

相关推荐
CareyWYR25 分钟前
每周AI论文速递(251201-251205)
人工智能
北京耐用通信2 小时前
电磁阀通讯频频“掉链”?耐达讯自动化Ethernet/IP转DeviceNet救场全行业!
人工智能·物联网·网络协议·安全·自动化·信息与通信
cooldream20092 小时前
小智 AI 智能音箱深度体验全解析:人设、音色、记忆与多场景玩法的全面指南
人工智能·嵌入式硬件·智能音箱
oil欧哟2 小时前
AI 虚拟试穿实战,如何低成本生成模特上身图
人工智能·ai作画
央链知播3 小时前
中国移联元宇宙与人工智能产业委联席秘书长叶毓睿受邀到北京联合大学做大模型智能体现状与趋势专题报告
人工智能·科技·业界资讯
人工智能培训3 小时前
卷积神经网络(CNN)详细介绍及其原理详解(2)
人工智能·神经网络·cnn
小徐_23333 小时前
uni-app 也能远程调试?使用 PageSpy 打开调试的新大门!
前端·微信小程序·uni-app
YIN_尹3 小时前
目标检测模型量化加速在 openEuler 上的实现
人工智能·目标检测·计算机视觉
mys55184 小时前
杨建允:企业应对AI搜索趋势的实操策略
人工智能·geo·ai搜索优化·ai引擎优化
小毅&Nora4 小时前
【人工智能】【深度学习】 ⑦ 从零开始AI学习路径:从Python到大模型的实战指南
人工智能·深度学习·学习