Flutter 处理主题 Theme 的一些建议

元胞磷火
• 阅读 1045

Flutter 处理主题 Theme 的一些建议

Flutter 处理主题 Theme 的一些建议

原文 https://medium.com/@ahmed.sal...

前言

主题通过指定一套颜色和文本样式的系统,帮助应用程序获得结构化设计和统一性。主题使您能够快速实现 UI,而不必强调次要细节,比如为每个 widget 指定确切的颜色。

正文

为什么选择 Theme 主题 ?

  • 您希望框架与您一起工作,而不是与您作对,所以请尝试利用您拥有的组件和功能
  • 这将是很容易使用的黑暗和光线主题和切换之间
  • 改变您的应用程序的外观和感觉是很容易的,而不需要改变您编写的每一行代码
  • 所有应用程序的组件和字体都是相同的,所以应用程序的大部分设计几乎是自动就位的。
  • 例如,不需要记住标题应该是 24 SP 30,或者复制每个 widget 的确切颜色
  • 由于您将输入更少的代码,因此您的开发时间将减少
  • 您将输入更少的代码,并且页面将很小,只显示组件,而不显示样式
  • 例如,每当您想声明一个 TextField 时,您将每次输入这个而不是长装饰 obj,从 1 行到 45 行,它可能或多或少取决于您的样式

Flutter 处理主题 Theme 的一些建议

Flutter 处理主题 Theme 的一些建议

色彩处理

Flutter 主题数据具有一定的 gaps 和 flows ,例如,并非所有的组件都应用于主题数据对象中的配色方案

看看这个例子,只定义了橙色的唯一主色值

Flutter 处理主题 Theme 的一些建议

Flutter 处理主题 Theme 的一些建议

那么我该如何克服这个问题呢?

所有这些问题都会按照这个 https://github.com/flutter/fl... 得到解决 但在此之前,我建议您使用 FlexColorScheme 包。

https://docs.flexcolorscheme....

Flutter 处理主题 Theme 的一些建议

Flutter 处理主题 Theme 的一些建议

FlexColorScheme 不仅解决了这些问题,而且还有更多的特性:

https://docs.flexcolorscheme....

Flutter 处理主题 Theme 的一些建议

  • 为不同的 AppBar 样式提供一个快速切换,而不需要每次都手动为它制作一个自定义主题,包括与 TabBar 相匹配的主题。
  • 主题的 Android 系统导航栏,以匹配您的应用程序主题,并使其部分或完全透明。
  • 在应用程序中实现多种颜色方案之间的轻松切换
  • 提供一个简单的方法,使主题的主要颜色品牌和混合背景和表面。能够轻松地改变不同表面的混合水平。
  • 还有,到 playground 上去发现更多的 https://rydmike.com/flexcolor...

文本主题

Flutter 处理主题 Theme 的一些建议

Flutter 处理主题 Theme 的一些建议

使用文本主题是很困难的,并且不建议你更改 ThemeData 对象中的 TextTheme,因为你会意外地更改一些你不知道的东西,例如日期选择器,除非你确切地知道这些更改将如何影响你的应用程序。

问题是 flutter 没有记录哪个文本样式应用于哪个组件,所以你必须自己去发现它

另外,您必须知道不能在调用 TextTheme() 构造函数时混合使用 20182021 术语。

2018 年的术语是标题 1,标题 2,标题 3,标题 4,标题 5,标题 6,字幕 1,字幕 2,body Text1,body Text2,标题,按钮,概述

2021 年的术语是 display Large,displayMedium,displaySmall,headline Large,headline Medium,headline Small,titleLarge,titleMedium,title Small,body Large,body Small,label Large,label Medium,label Small,

如果您选择更改文本主题数据样式,下面是一些将受到影响的组件

  • Body Large => TabBar Title, TimePicker Numbers (Clock)
  • Body Medium => The Default Text, Tooltip, ListTile Subtitle, and trailing
  • Body Small => The DatePicker day's numbers (1 to 30)
  • Title Large => App Bar Title, Dialog Title
  • Title Medium => ListTile title, StatefulHeaderCard title, DropdownMenuItem Selected Text, Dialog Content, Am/PM inside Time Picker
  • Title Small => The Month Section inside Date Picker, Error Text inside Text Field
  • Display Medium => Selected Time inside Time Picker
  • Headline Small => The selected date inside Date Picker

Flutter 处理主题 Theme 的一些建议

  • Label Small => ‘Select Time’ Text in the time picker

Flutter 处理主题 Theme 的一些建议

建议

我发现 gkinnerTeam 处理风格的方式是最好的例子之一,特别是在 flutter-Wonder-app 中处理的方式

https://github.com/gskinnerTeam

https://github.com/gskinnerTe...

Flutter 处理主题 Theme 的一些建议

Https://github.com/gskinnerteam/flutter-wonderous-app/blob/master/lib/styles/styles.dart

参考文献

结束语

如果本文对你有帮助,请转发让更多的朋友阅读。

也许这个操作只要你 3 秒钟,对我来说是一个激励,感谢。

祝你有一个美好的一天~


© 猫哥

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
java一生之敌 java一生之敌
2年前
JVM的内存模型和优化方式
一、JVM的内存模型1.!图片(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/52b2220f04010eb329efbef966f9fa40.png)其中s0,s1为幸
浩浩 浩浩
4年前
【Flutter实战】Widget简介
3.1Widget简介3.1.1概念在前面的介绍中,我们知道在Flutter中几乎所有的对象都是一个Widget。与原生开发中“控件”不同的是,Flutter中的Widget的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的组件如:用于手势检测的GestureDetectorwidget、用于APP主题数据传递的Theme
Stella981 Stella981
3年前
Flutter 功能型组件:颜色和主题(Theme)
前言Color类中颜色以一个int值保存,显示器颜色是由红、绿、蓝三基色组成,每种颜色占8比特,存储结构如下:Bit(位)颜色07蓝色815绿色1623红色2431Alpha(不透明度)Theme组件可以为MaterialAPP定义主题数据(ThemeData)。Material组件库里很多组件
Stella981 Stella981
3年前
Flutter 构建完整应用手册
这本食谱包含演示如何在写Flutter应用程序时解决常见问题的食谱。每个配方都是独立的,可以作为参考帮助您构建应用程序。使用主题共享颜色和字体样式为了在整个应用中共享颜色和字体样式,我们可以利用主题。定义主题有两种方式:应用程序范围或使用Theme小部件来定义应用程序特定部分的颜色和字体样式。事实上,应用程序范围
Stella981 Stella981
3年前
Android 踩坑记录
一、java.lang.IllegalStateException:YouneedtouseaTheme.AppCompattheme(ordescendant)withthisactivity.Activity继承了兼容包中的类,查看主题是否来自 Theme.AppCompat<stylename
Stella981 Stella981
3年前
40 个免费和收费的创意 WordPress 主题
免费创意WordPress主题Imbalance!(http://cdn.designmodo.com/wpcontent/uploads/2011/11/517.jpg"5")(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2
Stella981 Stella981
3年前
Flutter学习笔记(40)
如需转载,请注明出处:Flutter学习笔记(40)Timer实现短信验证码获取60s倒计时(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fupwgh%2Fp%2F13261089.html)
Stella981 Stella981
3年前
Flutter 介绍、运行环境
Flutter是谷歌公司开发的一款开源、免费的移动UI框架,可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。Flutter基于谷歌的dart语言,如果没有任何Dart语言的基础,不建议直接学习Flutter。建议先学习Dart语言的基本语法。然后再进入Flutter的学习