了解 Flutter + Material 应用程序中使用的默认样式

she*_*nan 10 dart material-design flutter flutter-theme

刚刚开始使用 Flutter + Material 设计。我注意到,当使用 ThemeData 创建主题时,如果我使用如下内容:

ThemeData(
  textTheme: TextTheme(bodyText1: TextStyle(color: Colors.white)),
)
Run Code Online (Sandbox Code Playgroud)

它似乎没有在带有白色文本小部件的简单 GridView 中为文本着色。但是,如果我改变上面的内容来使用bodyText2它。

bodyText2在应用程序中使用文本背后的逻辑是什么?有没有一个好地方可以参考在主题情况下使用哪些文本样式名称以及为什么?这些只是通过反复试验获得的知识,还是有一些很好的包罗万象的规则来确定在哪种情况下使用哪种样式?

谢谢。

Eva*_*van 7

更新:如果使用 2021 样式,而不是 2018 样式,请将bodyText2(2018 样式)交换为bodyMedium (2021 样式)。 结束更新。

我遇到了同样的问题并对此做了一些研究。

根据官方文档Text

样式参数是可选的。省略时,文本将使用最接近的封闭的样式DefaultTextStyle

以及bodyText2的解释TextTheme

Material的默认文本样式。

现在答案已经很清楚了。如果您的Text小部件没有任何明确指定的文本样式,并且没有通过在某些节点放置 a 的方式从其祖先继承DefaultTextStyle文本样式。bodyText2然后它将使用主题中的值。

  • 我会接受这个作为答案。你说得对,“bodyText2”用于未指定文本样式的场景。然而,这似乎是一个不直观的默认值;如果有更多信息说明为什么这种风格是默认的以及它是否是基于某种文化或逻辑原则而选择的,那就太好了。 (2认同)