我可能忽略了一些明显的东西。是否有 * 一个 * 属性可以更改Flutter应用程序中所有文本的颜色?
我现在的做法是,在我的MaterialApp中:
theme: ThemeData(
textTheme: Theme.of(context).textTheme.copyWith(
body1:
Theme.of(context).textTheme.body1.apply(color: Colors.pink),
body2:
Theme.of(context).textTheme.body2.apply(color: Colors.pink),
display1:
Theme.of(context).textTheme.display1.apply(color: Colors.pink),
display2:
Theme.of(context).textTheme.display2.apply(color: Colors.pink),
... // and so on
),
),
),
我也试过
textTheme: Theme.of(context).textTheme.apply(bodyColor: Colors.pink),
但这适用于下拉列表文本,而不是常规文本。同样,displayColor
适用于appBar文本和InputDecoration文本,但不是常规文本。我的代码中似乎没有任何decorationText
,所以我不确定它是什么。
我注意到有一个textSelectionColor
属性,但它只适用于TextField
小部件。
7条答案
按热度按时间6yt4nkrj1#
我认为
TextTheme.apply
是你想要的。bodyColor
将应用于headline
,title
,subhead
,button
,body1
和body2
。displayColor
将应用于display1
到display4
,和caption
。如果同时指定bodyColor
和displayColor
并使用相同的颜色值,则将有效地更改所有文本样式上的文本颜色。示例:
bjg7j2ky2#
对于整个应用程序,您可以在
Material
应用程序小部件中设置textTheme
属性。lxkprmvk3#
要提供一种似乎不需要直接设置所有Text样式就可以工作的替代方法,请在Widget树中的某个位置更改
DefaultTextStyle
的样式以使其生效8cdiaqws4#
也许有点晚了,但你可以用这个:
unhi4e5o5#
我的工作是这样的:
i86rm4rw6#
我发现在TextTheme上使用copyWith()效果很好,因为你可以只改变特定的属性,比如fontsize --其他的都保持不变。
iqjalb3h7#
合并是用来改变文本的颜色与textTheme...