flutter使用getx实现主题色切换
第一步实现 我们先封装好 themeController进行控制import package:flutter/material.dart; import package:get/get.dart; class ThemeController extends GetxController { // 主题模式system / light / dark final _themeMode ThemeMode.system.obs; ThemeMode get themeMode _themeMode.value; // 主题色种子 final _seedColor const Color(0xFF2196F3).obs; Color get seedColor _seedColor.value; void setThemeMode(ThemeMode mode) { _themeMode.value mode; Get.changeThemeMode(mode); } void setSeedColor(Color color) { _seedColor.value color; // 切换主题色后根据当前模式刷新对应主题 if (_themeMode.value ThemeMode.dark) { Get.changeTheme(_buildDarkTheme()); } else { Get.changeTheme(_buildLightTheme()); } } ThemeData _buildLightTheme() { return ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: _seedColor.value, brightness: Brightness.light, ), useMaterial3: true, ); } ThemeData _buildDarkTheme() { return ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: _seedColor.value, brightness: Brightness.dark, ), useMaterial3: true, ); } ThemeData get lightTheme _buildLightTheme(); ThemeData get darkTheme _buildDarkTheme(); }暗色和亮色 这是getx自带的ElevatedButton( onPressed: () themeController.setThemeMode(ThemeMode.dark), child: const Text(切换成暗黑), ), const SizedBox(width: 20), ElevatedButton( onPressed: () themeController.setThemeMode(ThemeMode.light), child: const Text(切换成亮色), ),实现多种颜色的主题色更改Wrap( spacing: 12, runSpacing: 12, children: _colors.map((color) { return Obx(() { final selected themeController.seedColor color; return GestureDetector( onTap: () themeController.setSeedColor(color), child: Container( width: 44, height: 44, decoration: BoxDecoration( color: color, shape: BoxShape.circle, border: Border.all( color: selected ? Colors.black : Colors.transparent, width: 3, ), ), child: selected ? const Icon(Icons.check, color: Colors.white, size: 24) : null, ), ); }); }).toList(), ), const SizedBox(height: 30), Obx( () Text( 当前主题色${_colorName(themeController.seedColor)}, style: Theme.of(context).textTheme.titleMedium, ), ), // 可选主题色 static const ListColor _colors [ Color(0xFF2196F3), // 蓝色 Color(0xFFF44336), // 红色 Color(0xFF4CAF50), // 绿色 Color(0xFFFF9800), // 橙色 Color(0xFF9C27B0), // 紫色 Color(0xFF795548), // 棕色 ]; String _colorName(Color color) { switch (color.value) { case 0xFF2196F3: return 蓝色; case 0xFFF44336: return 红色; case 0xFF4CAF50: return 绿色; case 0xFFFF9800: return 橙色; case 0xFF9C27B0: return 紫色; case 0xFF795548: return 棕色; } return 未知; }

相关新闻

专科生AI写作工具实测:千笔写作与学术猹对比

专科生AI写作工具实测:千笔写作与学术猹对比

1. 项目背景与工具定位作为一名长期关注AI辅助写作工具的教育科技从业者,最近在职业教育领域发现了个有趣现象:专科层次的学生群体对AI论文写作工具存在强烈需求,但市面上主流产品往往面向硕博群体设计。这次我选取了两款宣称"专科生友好…

2026/10/15 6:37:50 阅读更多 →
EvoPrune:多模态大语言模型视觉令牌动态剪枝技术

EvoPrune:多模态大语言模型视觉令牌动态剪枝技术

1. 项目概述:EvoPrune的核心价值与创新点在计算机视觉与自然语言处理的交叉领域,多模态大语言模型(MLLM)正面临一个关键瓶颈:随着图像和视频分辨率的提升,视觉令牌(visual tokens)数…

2026/10/15 0:13:03 阅读更多 →
Android Activity嵌入技术:大屏设备多窗口开发指南

Android Activity嵌入技术:大屏设备多窗口开发指南

1. Activity嵌入技术全景解析在大屏设备普及的今天,传统单Activity全屏显示模式已无法满足复杂交互需求。Activity嵌入技术(Activity Embedding)通过将多个Activity同时展示在同一窗口,实现了类似桌面应用的多窗口体验。这项技术最…

2026/10/10 9:49:15 阅读更多 →

最新新闻

基因组测序技术在多倍体与杂合基因组组装中的突破与应用

基因组测序技术在多倍体与杂合基因组组装中的突破与应用

1. 项目背景与行业痛点基因组测序技术在过去二十年里经历了从"奢侈品"到"常规工具"的转变。2010年完成一个人类基因组测序还需要数万美元,而如今同样的工作仅需几百美元就能完成。这种成本下降使得基因组测序从人类医学领域迅速扩展到动植物研究…

2026/10/15 9:05:35 阅读更多 →
WorkBuddy App上线实战:六阶段路径与16个真机坑避坑指南

WorkBuddy App上线实战:六阶段路径与16个真机坑避坑指南

1. 项目概述:这不是一个“教你怎么装软件”的教程,而是一份从零到上线的实战手记 WorkBuddy 这个名字最近在开发者圈子里出现频率越来越高,但很多人点开官网、下载安装、试用几个 Skill 后就停住了——它看起来像一个智能终端助手&#xff0…

2026/10/15 9:05:35 阅读更多 →
MATLAB数字信号处理:IIR滤波器设计与应用实战

MATLAB数字信号处理:IIR滤波器设计与应用实战

1. 数字滤波器的美颜相机原理数字滤波器在信号处理领域的地位,就像美颜相机在摄影中的作用一样关键。它能对信号进行"精修",突出我们想要的频率特征,或者消除那些干扰成分。IIR(无限脉冲响应)滤波器作为数字…

2026/10/15 9:05:35 阅读更多 →
Vue+SpringBoot构建门诊电子病历与药品管理系统

Vue+SpringBoot构建门诊电子病历与药品管理系统

1. 项目概述与核心价值门诊电子病历处方药品进销存管理系统是医疗信息化领域的重要应用,它通过整合Vue.js前端框架与SpringBoot后端技术,实现了医疗机构日常运营中三大核心业务的一体化管理。这个系统我前后参与过三次迭代开发,最深切的体会是…

2026/10/15 9:05:35 阅读更多 →
SpringBoot火锅店管理系统开发与毕业设计实践

SpringBoot火锅店管理系统开发与毕业设计实践

1. 项目概述与核心价值火锅店管理系统作为典型的餐饮行业信息化解决方案,其核心价值在于通过数字化手段解决传统火锅店经营中的三大痛点:人工记录易出错、高峰期服务效率低、经营数据分析滞后。基于SpringBoot框架开发的这套系统,不仅满足了计…

2026/10/15 9:05:35 阅读更多 →
从零手写卷积神经网络:2019经典作业实战笔记与避坑指南

从零手写卷积神经网络:2019经典作业实战笔记与避坑指南

1. 为什么值得花时间啃这份经典作业如果你正在入门计算机视觉,或者想系统理解卷积神经网络到底是怎么跑起来的,那这份2019版的课程作业大概率是你绕不开的一站。它不像市面上很多“调包式”教程那样,给你一个现成模型跑跑就完事,而…

2026/10/15 9:04:33 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →