效果展示
- 样式自定义

- 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.ioMaterial 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/overviewmaterial 样式文件
https://www.figma.com/community/file/1035203688168086460material 颜色样式生成器
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

