从Flutter+Material设计开始。我注意到,当使用ThemeData创建主题时,如果我使用这样的东西:
ThemeData(
textTheme: TextTheme(bodyText1: TextStyle(color: Colors.white)),
)
在一个简单的GridView中,它似乎并没有用白色来给文本上色。但是,如果我将上面的内容更改为使用bodyText2
,则确实如此。
bodyText2
用于整个应用程序的文本背后的逻辑是什么?有没有一个好的地方可以参考哪些文本样式的名称被使用,以及为什么在主题化的情况下使用?这一切只是通过试错获得的知识吗?还是有一些很好的包罗万象的规则可以在什么情况下使用哪些风格?
谢谢。
更新:如果使用2021样式,而不是2018样式,请将bodyText2(2018样式(替换为bodyMedium(2021样式(。结束更新
我遇到了同样的问题,并对此进行了一些研究。
根据Text
:的官方文件
样式参数是可选的。如果省略,文本将使用最接近的封闭
DefaultTextStyle
的样式。
以及对TextTheme
:中bodyText2的解释
材质的默认文本样式。
现在答案很清楚了。如果您的Text
小部件没有任何明确给定的文本样式,并且没有通过在某些节点放置DefaultTextStyle
的方式从其祖先继承的文本样式。然后它将使用主题中bodyText2
中的值。
您将在此处阅读与主题相关的文档:https://flutter.dev/docs/cookbook/design/themes
他们已经举例说明了。