 
                效果展示
- 样式自定义

- Material 样式调试工具




本节目标
- 了解 Material Design 设计样式表
- Flutter 中自定义样式(全局、局部)- 颜色
- 字体
- 组件
 
视频
https://www.bilibili.com/video/BV1aT4y1S7pB
代码
- Flutter GetX 中定制你的样式 
 https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_theme_custom_getx
- 调试你的样式 
 https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_material_design3_theme_getx
参考
- Material Design 2 
 https://material.io
- Material Design 3 
 https://m3.material.io
 https://m3.material.io/styles/color/overview
 https://m3.material.io/styles/typography/overview
 https://m3.material.io/foundations/design-tokens/overview
- material 样式文件 
 https://www.figma.com/community/file/1035203688168086460
- material 颜色样式生成器 
 https://material-foundation.github.io/material-theme-builder
正文
了解 Material 样式表
- material 样式文件, figma 格式
 https://www.figma.com/community/file/1035203688168086460
导入你的 figma
- 颜色、字体
 
                - 组件
 
                Flutter 中一步步定制你的样式
第一步: 生成 colorScheme,创建 ThemeData
- material-theme-builder 编辑器
 https://material-foundation.github.io/material-theme-builder/#/custom
导出 dart 格式导入你的项目
- lib/color_schemes.dart
| 1 | import 'package:flutter/material.dart'; | 
分别定义了
ColorScheme类型的,明亮和暗色两种色彩定义
- lib/theme.dart
| 1 | import 'package:flutter/material.dart'; | 
创建
明亮和暗色两种ThemeData样式对象
分别设置colorScheme属性为上面的lightColorSchemedarkColorScheme色彩定义
第二步: 切换 theme 效果
- 加入 GetXpub 包
https://pub.flutter-io.cn/packages/get
| 1 | > flutter pub add get | 
- 新增 lib/global.dart全局变量管理
| 1 | import 'package:get/get.dart'; | 
- 修改 lib/main.dartmain 函数
| 1 | void main() { | 
ensureInitialized会先绑定 Flutter 引擎和原生端的接口,为后续的组件初始做准备
- 加入 lib/main.dart切换按钮
| 1 | floatingActionButton: Obx(() { | 
使用
Obx方式响应按钮切换
第三步: 自定义主题色 MaterialColor
- 新增 lib/string_to_material_color.dart字符串转MaterialColor函数
| 1 | /// 字符串转 Color 类型 | 
- 选取颜色
- 设置 lib/theme.dartlight对象的属性primarySwatch
| 1 | class AppTheme { | 
第四步: 全局定义组件样式
- 修改 lib/theme.dart,appBarTheme属性
| 1 | class AppTheme { | 
copyWith方法将会把其它属性一起复制
第五步: 局部定义组件样式
- 修改 lib/main.dart,MyHomePage界面的build方法
| 1 | // 通过 GetX 的 theme 属性,读取当前样式 `ThemeData` | 
用
Theme包裹需要局部使用的组件, 设置data属性
总结
本文介绍了 Material Design 3 中的样式表,以及如何在 Flutter 中如何修改全局、局部的样式,MaterialCorlor 和 Color 的区别以及如何使用。
我们可以发现如果和设计师协调好 颜色、字体、组件交互的样式标准,然后再适配下 Material Design ,样式配置将会快很多,很多时候样式调整给客户的是一种新鲜感,比如节假日、特殊日子里色调改下就行。
© 猫哥
- 微信 ducafecat 
 
                

