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

6.1 主题与暗色模式

Flutter 的主题系统ThemeData提供了统一的视觉风格管理通过 Material 3 的颜色系统和深色模式支持可以轻松构建专业的视觉体系。一、ThemeData 动态切换1.1 定义双主题classAppTheme{// 亮色主题staticThemeDatagetlightThemeThemeData(useMaterial3:true,brightness:Brightness.light,colorScheme:ColorScheme.fromSeed(seedColor:constColor(0xFF6750A4),// 主色调brightness:Brightness.light,),// 文字主题textTheme:_buildTextTheme(Brightness.light),// 组件主题appBarTheme:constAppBarTheme(centerTitle:true,elevation:0,),cardTheme:CardTheme(elevation:2,shape:RoundedRectangleBorder(borderRadius:BorderRadius.circular(12)),),elevatedButtonTheme:ElevatedButtonThemeData(style:ElevatedButton.styleFrom(minimumSize:constSize.fromHeight(48),shape:RoundedRectangleBorder(borderRadius:BorderRadius.circular(12)),),),inputDecorationTheme:InputDecorationTheme(border:OutlineInputBorder(borderRadius:BorderRadius.circular(12),),filled:true,),);// 暗色主题staticThemeDatagetdarkThemeThemeData(useMaterial3:true,brightness:Brightness.dark,colorScheme:ColorScheme.fromSeed(seedColor:constColor(0xFF6750A4),brightness:Brightness.dark,),textTheme:_buildTextTheme(Brightness.dark),appBarTheme:constAppBarTheme(centerTitle:true,elevation:0),cardTheme:CardTheme(elevation:4,shape:RoundedRectangleBorder(borderRadius:BorderRadius.circular(12)),),);staticTextTheme_buildTextTheme(Brightnessbrightness){finalcolorbrightnessBrightness.light?constColor(0xFF1C1B1F):constColor(0xFFE6E1E5);returnTextTheme(headlineLarge:TextStyle(fontSize:32,fontWeight:FontWeight.bold,color:color),headlineMedium:TextStyle(fontSize:24,fontWeight:FontWeight.bold,color:color),titleLarge:TextStyle(fontSize:20,fontWeight:FontWeight.w600,color:color),bodyLarge:TextStyle(fontSize:16,color:color),bodyMedium:TextStyle(fontSize:14,color:color.withOpacity(0.8)),);}}1.2 主题切换控制器classThemeControllerextendsChangeNotifier{ThemeMode_themeMode;ThemeController({ThemeModeinitialThemeMode.system}):_themeModeinitial;ThemeModegetthemeMode_themeMode;boolgetisDark_themeModeThemeMode.dark;voidsetThemeMode(ThemeModemode){_themeModemode;PreferencesService.saveThemeMode(mode.index);notifyListeners();}voidtoggleTheme(){setThemeMode(isDark?ThemeMode.light:ThemeMode.dark);}// 跟随系统voidfollowSystem()setThemeMode(ThemeMode.system);}// 在 App 入口ChangeNotifierProvider(create:(_)ThemeController(initial:ThemeMode.values[PreferencesService.getThemeMode()],),child:ConsumerThemeController(builder:(context,themeController,_)MaterialApp(theme:AppTheme.lightTheme,darkTheme:AppTheme.darkTheme,themeMode:themeController.themeMode,home:constHomePage(),),),)二、自定义颜色与字体系统2.1 Material 3 颜色系统// 从种子色生成完整颜色系统finalcolorSchemeColorScheme.fromSeed(seedColor:constColor(0xFF6750A4),brightness:Brightness.light,);// 颜色角色对应表// primary → 主要操作按钮背景// onPrimary → primary 上的文字/图标// primaryContainer → 次要容器背景// secondary → 次要操作// surface → 卡片、对话框背景// onSurface → surface 上的文字// error → 错误状态// 在 Widget 中使用Widgetbuild(BuildContextcontext){finalcolorSchemeTheme.of(context).colorScheme;returnContainer(color:colorScheme.primaryContainer,child:Text(Hello,style:TextStyle(color:colorScheme.onPrimaryContainer),),);}2.2 扩展主题颜色自定义颜色// 定义扩展颜色immutableclassAppColorsextendsThemeExtensionAppColors{finalColorsuccess;finalColorwarning;finalColorinfo;finalColorgradientStart;finalColorgradientEnd;constAppColors({requiredthis.success,requiredthis.warning,requiredthis.info,requiredthis.gradientStart,requiredthis.gradientEnd,});overrideAppColorscopyWith({Color?success,Color?warning,Color?info,Color?gradientStart,Color?gradientEnd,}){returnAppColors(success:success??this.success,warning:warning??this.warning,info:info??this.info,gradientStart:gradientStart??this.gradientStart,gradientEnd:gradientEnd??this.gradientEnd,);}overrideAppColorslerp(AppColors?other,double t){if(othernull)returnthis;returnAppColors(success:Color.lerp(success,other.success,t)!,warning:Color.lerp(warning,other.warning,t)!,info:Color.lerp(info,other.info,t)!,gradientStart:Color.lerp(gradientStart,other.gradientStart,t)!,gradientEnd:Color.lerp(gradientEnd,other.gradientEnd,t)!,);}// 亮色配置staticconstlightAppColors(success:Color(0xFF4CAF50),warning:Color(0xFFFF9800),info:Color(0xFF2196F3),gradientStart:Color(0xFF6750A4),gradientEnd:Color(0xFF03DAC6),);// 暗色配置staticconstdarkAppColors(success:Color(0xFF81C784),warning:Color(0xFFFFB74D),info:Color(0xFF64B5F6),gradientStart:Color(0xFFD0BCFF),gradientEnd:Color(0xFF6FF7EC),);}// 注册到 ThemeDataThemeDatagetlightThemeThemeData(extensions:const[AppColors.light],// ...)// 在 Widget 中使用finalappColorsTheme.of(context).extensionAppColors()!;Container(color:appColors.success)2.3 自定义字体# pubspec.yamlflutter:fonts:-family:Outfitfonts:-asset:assets/fonts/Outfit-Regular.ttfweight:400-asset:assets/fonts/Outfit-Medium.ttfweight:500-asset:assets/fonts/Outfit-Bold.ttfweight:700ThemeDatagetthemeThemeData(fontFamily:Outfit,// 全局字体textTheme:constTextTheme(headlineLarge:TextStyle(fontFamily:Outfit,fontSize:32,fontWeight:FontWeight.w700,),),)2.4 动态主题色用户自定义classDynamicThemeControllerextendsChangeNotifier{Color_seedColorconstColor(0xFF6750A4);ColorgetseedColor_seedColor;ThemeDatagetlightThemeThemeData(useMaterial3:true,colorScheme:ColorScheme.fromSeed(seedColor:_seedColor,brightness:Brightness.light,),);ThemeDatagetdarkThemeThemeData(useMaterial3:true,colorScheme:ColorScheme.fromSeed(seedColor:_seedColor,brightness:Brightness.dark,),);voidupdateSeedColor(Colorcolor){_seedColorcolor;notifyListeners();}}小结知识点核心要点ThemeData定义全局视觉风格lightTheme darkThemeThemeModesystem / light / dark 三种切换模式ColorScheme.fromSeed从种子色自动生成 Material 3 完整颜色系统ThemeExtension扩展自定义颜色支持亮/暗色自动切换字体配置pubspec.yaml 注册fontFamily 全局应用 下一节6.2 国际化i18n

相关文章:

6.1 主题与暗色模式

Flutter 的主题系统(ThemeData)提供了统一的视觉风格管理,通过 Material 3 的颜色系统和深色模式支持,可以轻松构建专业的视觉体系。一、ThemeData 动态切换 1.1 定义双主题 class AppTheme {// 亮色主题static ThemeData get lig…...

跨平台移动应用开发:集成Qwen3-ASR-0.6B语音识别

跨平台移动应用开发:集成Qwen3-ASR-0.6B语音识别 1. 引言 想象一下,你的移动应用能够听懂用户说的任何语言,无论是普通话、粤语还是英语,甚至能识别带背景音乐的歌声。这不是科幻电影的场景,而是现在就能实现的功能。…...

手把手教你用AutoGen Studio:内置Qwen3-4B模型,快速构建AI代理应用

手把手教你用AutoGen Studio:内置Qwen3-4B模型,快速构建AI代理应用 1. AutoGen Studio简介 AutoGen Studio是一个低代码界面,旨在帮助开发者快速构建AI代理、通过工具增强它们、将它们组合成团队并与之交互以完成任务。它基于AutoGen Agent…...

Qwen-Image-2512入门必看:理解Pixel Art生成中的‘grid alignment’对齐机制

Qwen-Image-2512入门必看:理解Pixel Art生成中的‘grid alignment’对齐机制 想用AI生成完美的像素画,却总感觉哪里不对劲?边缘模糊、线条歪斜、图案像是“糊”在画布上,完全没有经典像素艺术那种干净利落的“格子感”。 如果你…...

零基础学深度学习必备学哪些框架?PyTorch 和 TensorFlow 选哪个?完整指南

零基础学深度学习必备学哪些框架?PyTorch 和 TensorFlow 选哪个?完整指南 标签:#深度学习、#pytorch、#tensorflow、#计算机视觉、#人工智能、#python、#机器学习 ### 一、深度学习入门必学框架有哪些?分别用来做什么&#xff1f…...

深度学习的完整学习路径是什么?看这一篇就够了

深度学习的完整学习路径是什么?看这一篇就够了 标签:#深度学习、#人工智能、#自然语言处理、#神经网络、#机器学习、#计算机视觉、#python### 第一部分:为什么很多人学深度学习却找不到工作?### 第二部分:企业真正需要…...

大模型面试复盘:从0基础到收获4个Offer,我的转行避坑指南!

离最后一场面试过去一段时间了,是时候做一个小小的复盘。 从4月份开始自学大模型,最开始我连llm是什么都不知道。我的路线是先做定位为大模型应用。每天下班学几个小时。 从4月到11月,基本就是学基础,总结八股,看书&am…...

电子电路中的“心脏”:电源诳

前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...

LLM+RL智能推荐入门基础教程(非常详细),收藏这一篇就够了!

一、导语(Lead) 这篇综述论文系统性地解决了大语言模型(LLM)与强化学习(RL)在推荐系统中如何高效协同的架构性难题。在当前的推荐系统中,纯强化学习面临状态表征稀疏、探索成本高的瓶颈&#x…...

OpenClaw与Hermes入门基础教程(非常详细),收藏这一篇就够了!

最近 Hermes Agent 很火,媒体、Reddit 上"I ditched OpenClaw for Hermes"的帖子接连不断,国内也有不少朋友在问同一个问题: 它们到底是同一类东西吗?Hermes 能直接替代 OpenClaw 吗? 这个问题正好点中了最…...

RAG优化的底层逻辑被推翻!检索质量才是生成效果的核心,90%的人都选错了评估指标

做RAG系统的开发者,几乎都陷入过两个无解的困局: 一是评估成本高到离谱,每次迭代都要跑完整的端到端生成人工/LLM评估,耗时耗力还受大模型随机波动影响; 二是优化方向完全跑偏,疯狂堆迭代检索、多轮反思、子…...

BAAI/bge-m3性能瓶颈?CPU多线程优化部署教程

BAAI/bge-m3性能瓶颈?CPU多线程优化部署教程 你是不是遇到过这种情况:用BAAI/bge-m3模型做文本相似度分析,处理几百条数据就要等上好几分钟?明明是个功能强大的模型,却在CPU上跑得慢吞吞,让人干着急。 我…...

吐血总结!Uni-app / 微信小程序 iOS 与 Android 经典兼容性踩坑实录

跨平台开发界流传着一句名言:“Write once, run anywhere”,但在实际的 Uni-app 和微信小程序开发中,我们往往体会到的是 “Write once, debug everywhere”。由于 iOS(通常基于 WebKit/WKWebView)和 Android&#xff…...

HsMod:炉石传说游戏体验革命性提升的55个超强功能插件

HsMod:炉石传说游戏体验革命性提升的55个超强功能插件 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 想要彻底改变你的炉石传说游戏体验吗?HsMod插件为你带来前所未…...

基于vue的消息推送平台[vue]-计算机毕业设计源码+LW文档

摘要:本文详细阐述了一个基于Vue框架的消息推送平台的设计与实现过程。该平台旨在为企业和开发者提供高效、精准的消息推送服务,以满足不同场景下的信息传播需求。通过使用Vue及相关技术栈,实现了用户管理、消息模板管理、消息推送管理等核心…...

深度学习新手福音:PyTorch通用开发镜像,一键启动你的第一个AI项目

深度学习新手福音:PyTorch通用开发镜像,一键启动你的第一个AI项目 1. 镜像概述与核心优势 1.1 为什么选择这个镜像 PyTorch-2.x-Universal-Dev-v1.0是为深度学习初学者和开发者量身打造的一站式开发环境。想象一下,你刚接触深度学习&#…...

2.14 sql数据删除(DELETE、TRUNCATE)

2.14 数据删除(DELETE、TRUNCATE) 这一章我会带你彻底搞懂SQL中删除数据的两大利器:DELETE和TRUNCATE。学完之后,你能安全地清理无效订单、测试数据,并能区分什么时候用DELETE,什么时候用TRUNCATE。 学习前…...

【限时公开】某千亿级AI平台未披露的异常处理协议v3.2:支持跨Agent协作恢复的分布式Saga-LLM混合事务模型

第一章:AIAgent架构中的异常处理机制 2026奇点智能技术大会(https://ml-summit.org) 在AIAgent系统中,异常并非边缘场景,而是核心运行态的固有组成部分。当Agent执行任务链(如“检索→推理→工具调用→响应生成”)时&…...

Android开发实战:用Zxing实现前置摄像头扫码的5个常见坑及解决方案

Android开发实战:Zxing前置摄像头扫码的5个技术深坑与工业级解决方案 在移动支付和身份核验场景中,前置摄像头扫码正成为刚需功能。但当你把Zxing的默认后置摄像头方案切换到前置时,会发现这个看似简单的需求背后藏着诸多"暗礁"。本…...

2.13 sql数据更新(UPDATE)

2.13 数据更新(UPDATE) 在电商数据分析工作中,你会遇到这些必须用UPDATE的场景:批量修正错误数据(如订单状态、商品价格、用户等级)。运营活动结束后统一调整商品库存。根据用户行为数据更新用户标签&#…...

为什么File Browser是自建云端文件管理的最佳选择?3步打造个人文件中心

为什么File Browser是自建云端文件管理的最佳选择?3步打造个人文件中心 【免费下载链接】filebrowser 📂 Web File Browser 项目地址: https://gitcode.com/gh_mirrors/fi/filebrowser 还在为跨设备访问文件而烦恼吗?是否厌倦了在多个…...

实证论文不再卡壳!虎贲等考 AI 数据分析:零代码做出期刊级结果

在本科、硕士毕业论文与期刊发表中,数据分析往往是最容易卡住、最耗时、最容易出错的环节。不会 Stata、不懂 Python、SPSS 操作复杂、面板数据不会处理、回归结果不会解读…… 这些问题让大量学生与研究者卡在实证阶段,反复返修、延期、被拒稿。 如今&…...

问卷设计还在手动瞎编?对比实测:虎贲等考 AI 一键生成专业问卷,统计分析一步到位

每逢课程论文、毕业论文、调研实践、学术课题,问卷设计与数据分析就成了最磨人的环节。很多同学要么题目不专业、维度不清晰,要么信效度不过关、数据无法分析,熬了几天做出来的问卷,最后根本用不了。 市面上的问卷工具要么只能收…...

告别熬夜绘图!虎贲等考 AI 科研绘图:让期刊级图表一键成型

在论文写作、课题研究与期刊发表中,科研绘图是决定成果呈现质量的关键环节,更是审稿人重点关注的 “门面标准”。一张规范、清晰、数据真实的图表,能显著提升论文说服力;而粗糙、模糊、不合规的插图,往往直接导致返修甚…...

按 Token 计费是个坑?企业级 Agent 的 FinOps 成本控制策略

按 Token 计费是个坑?企业级 Agent 的 FinOps 成本控制策略 关键词 Token 计费 企业级 Agent FinOps 成本控制 大语言模型(LLM) prompt 工程 资源优化 摘要 随着大语言模型(LLM)在企业中的广泛应用,Token计费模式已成为AI应用成本的主要组成部分。本文深入探讨了企业级Agen…...

【联合仿真实战】从零搭建Adams机械臂与Simulink的闭环控制模型

1. 从开环到闭环:为什么需要控制算法? 当你已经完成Adams机械臂与Simulink的基础联合仿真对接,看着机械臂在开环控制下勉强运动时,可能会发现这些问题:末端轨迹像醉汉走路一样飘忽不定,关节角度总是偏离预期…...

fMRI(4-1)统计分析报告生成器说明

fMRI 统计分析报告生成器说明 文件:generate_stats_report.m 版本:v1.0 依赖:run_full_pipeline.m run_post_analysis.m 的完整输出 被试分组 CSV 目录 功能概述依赖环境目录结构要求输入参数输出文件全局配置参数调用方式数据预加载流程报…...

AIAgent架构中的多目标优化难题(工业级Agent系统92%失败源于此)

第一章:AIAgent架构中的多目标优化 2026奇点智能技术大会(https://ml-summit.org) 在现代AI Agent系统中,单一指标优化已无法满足复杂场景需求——响应延迟、推理准确性、资源消耗、用户意图对齐度与长期任务成功率往往相互冲突。多目标优化&#xff08…...

从ChatUI到AgentOS:下一代AIAgent交互范式迁移,3类企业已紧急重构前端架构

第一章:AIAgent架构人机交互界面设计的范式演进本质 2026奇点智能技术大会(https://ml-summit.org) 人机交互界面(HMI)在AIAgent架构中已从静态控件集合跃迁为动态语义协商场域,其演进本质并非UI组件的堆叠升级,而是认…...

AIAgent仿真环境搭建终极清单(2024Q3最新):覆盖Unity ML-Agents v4.0、Isaac Sim 2024.1、Meta’s Habitat 3.2 兼容矩阵与迁移路径

第一章:AIAgent架构中的仿真环境搭建 2026奇点智能技术大会(https://ml-summit.org) 仿真环境是AIAgent训练与验证的核心基础设施,它需精确复现真实世界的状态演化、动作反馈与多智能体交互逻辑。一个健壮的仿真环境不仅提供高保真物理/逻辑建模能力&am…...