【问题标题】:Material Design Theme in FlutterFlutter 中的 Material Design 主题
【发布时间】:2019-10-01 20:15:24
【问题描述】:

我在哪里设置来自https://material.io/resources/color/ 的第二次颜色?

根据ThemeData 类,我必须设置accentColor,我知道该怎么做:“[accentColor],有时称为辅助颜色”。

解析theme_data.dart后还可以设置colorScheme.secondary。但是设置ColorScheme的属性意味着你必须设置所有的属性。你甚至应该设置ColorScheme 并覆盖它吗?另外,我在哪里设置次要浅色和次要深色?我觉得有点迷茫,因为定制ThemeData 的唯一方法是阅读整个材料主题代码。或者至少是其中的大部分。有没有深入的文档?

【问题讨论】:

    标签: flutter material-design theming


    【解决方案1】:

    我在哪里设置来自https://material.io/resources/color/ 的第二次颜色?

    一般来说,这样做的好地方是ThemeData,它可以作为theme 参数传递给MaterialApp

    但是设置ColorScheme的属性意味着你必须设置所有属性

    不一定——除非我误解了这个问题。 ColorScheme 有一个方法 copyWith() 接受一堆命名参数。因此,您可以像这样重用现有的ColorScheme

    final newScehme = someColorScheme.copyWith(background: ...)
    

    当然,诀窍是检索该方案。您可能可以通过访问 ThemeData's colorScheme 属性来检索它:

    Theme.of(context).colorScheme
    

    你甚至应该设置ColorScheme 并覆盖它吗?

    我没有在文档中看到任何反对这样做的建议,尽管我没有梳理所有内容。我想这取决于您的用例。

    还有,我在哪里设置次要浅色和次要深色?

    我不是特别精通材料设计指南和复杂性,但也许 secondarysecondaryVariant 是你所追求的?

    是否有任何深入的文档?

    取决于你对深度的定义。以下链接提供了与主题和颜色相关的各种属性的合理概述:

    另请注意,MaterialApp 上有一个 darkTheme 属性,您可以在系统请求时使用它来指定深色主题。

    一般来说,我发现ThemeData 有大量的自定义选项,尤其是当您将它与许多主题相关课程中出现的copyWith 结合使用时。 ThemeData 是否与 Material Design 指南非常匹配,我不能肯定地说。但是,文档确实很好地解释了属性,因此将它们与实际指南进行比较应该可以让人们了解什么是什么。

    【讨论】:

    • colorScheme: Theme.of(context).colorScheme.copyWith(secondary: Colors.amber) 工作正常。我已经考虑过了,但没有尝试。感谢您的提示。我想我必须做很多试验和错误才能找到哪个颜色映射到哪个小部件。谢谢。
    【解决方案2】:

    也许您想要 copyWith 方法,它允许您覆盖尽可能少或尽可能多的父 ThemeData。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      相关资源
      最近更新 更多