效果展示
- 样式自定义
- 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
属性为上面的lightColorScheme
darkColorScheme
色彩定义
第二步: 切换 theme 效果
- 加入
GetX
pub 包
https://pub.flutter-io.cn/packages/get
1 | > flutter pub add get |
- 新增
lib/global.dart
全局变量管理
1 | import 'package:get/get.dart'; |
- 修改
lib/main.dart
main 函数
1 | void main() { |
ensureInitialized
会先绑定 Flutter 引擎和原生端的接口,为后续的组件初始做准备
- 加入
lib/main.dart
切换按钮
1 | floatingActionButton: Obx(() { |
使用
Obx
方式响应按钮切换
第三步: 自定义主题色 MaterialColor
- 新增
lib/string_to_material_color.dart
字符串转MaterialColor
函数
1 | /// 字符串转 Color 类型 |
- 选取颜色
- 设置
lib/theme.dart
light
对象的属性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