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/7/27 5:05:23 阅读更多 →
EvoPrune:多模态大语言模型视觉令牌动态剪枝技术

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

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

2026/7/27 5:05:23 阅读更多 →
Android Activity嵌入技术:大屏设备多窗口开发指南

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

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

2026/7/27 5:05:23 阅读更多 →

最新新闻

C#的类型系统与内存管理:从堆栈到垃圾回收

C#的类型系统与内存管理:从堆栈到垃圾回收

C#与C和Java都有血缘关系,但它的类型系统设计走出了自己的路径。理解C#的类型系统,是写出高性能、低GC压力代码的前提。一、值类型与引用类型的本质差异C#将类型分为值类型和引用类型,这决定了对象的存储位置和行为。值类型存储在变量声明的位…

2026/7/27 5:19:28 阅读更多 →
C++ 动态库与静态库的区别:从原理到应用

C++ 动态库与静态库的区别:从原理到应用

C 动态库与静态库的区别:从原理到应用一、引言:代码复用的两种形态在 C 项目开发中,将代码封装为库(Library)是实现模块化和代码复用的核心手段。库分为两种基本形态:静态库(Static Library) 和动态库(Dynamic Library / Shared L…

2026/7/27 5:19:28 阅读更多 →
临沂本地软件外包推荐

临沂本地软件外包推荐

在临沂,越来越多的中小企业开始寻求软件外包服务,但面对“需求说不清、预算控不住、交付没保障”的行业痛点,如何选到靠谱的供应商?本文不推荐任何公司,只提供一套基于行业公开标准的选型方法,并以临沂本地…

2026/7/27 5:19:28 阅读更多 →
光子芯片拓扑保护波导技术解析与应用

光子芯片拓扑保护波导技术解析与应用

1. 光子芯片上的"变速器":拓扑保护波导技术解析在光子芯片设计中,光信号的传输速度控制一直是个关键挑战。传统硅基波导通过改变材料折射率来调控光速,但存在损耗大、调控范围有限等问题。而基于拓扑保护原理的新型波导结构&#x…

2026/7/27 5:19:28 阅读更多 →
三菱PLC高精度压力控制方案与PID调试实战

三菱PLC高精度压力控制方案与PID调试实战

1. 项目背景与核心需求在工业自动化领域,压力控制一直是个既基础又关键的技术环节。这次接到的压背光板项目,要求我们实现0.01MPa级的高精度压力控制,这对PLC编程和PID调节都是不小的挑战。作为从业十多年的老工程师,我选择了三菱…

2026/7/27 5:19:28 阅读更多 →
ROS自定义消息开发:从定义到Python实现

ROS自定义消息开发:从定义到Python实现

1. ROS自定义消息开发概述 在ROS机器人开发中,消息(messages)是节点间通信的核心载体。当标准消息类型无法满足需求时,自定义消息就成为必备技能。最近在机械臂控制项目中发现,需要传递包含关节角度、力矩和温度数据的…

2026/7/27 5:18:28 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻