How to change the entire theme's text color in Flutter?

很明显我漏掉了什么。是否有 属性,可以改变所有文字的颜色在一个扑动应用程序?

我现在的做法是,在我的材料应用程序中:

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小部件。

109221 次浏览

我认为 bodyColor4是你想要的。bodyColor将应用于 headlinetitlesubheadbuttonbody1body2displayColor将通过 bodyColor0和 bodyColor1应用于 display1。如果同时指定 bodyColordisplayColor并使用相同的颜色值,则将有效地更改所有文本样式上的文本颜色。

例如:

final newTextTheme = Theme.of(context).textTheme.apply(
bodyColor: Colors.pink,
displayColor: Colors.pink,
);

为了提供一种不直接设置所有 Text 样式就可以工作的替代方法,需要在 Widget 树中的位置更改 DefaultTextStyle的样式以生效

return DefaultTextStyle(
style: TextStyle(color: Colors.pink),
child: _YOUR_WIDGETS_
)

也许有点晚了,但你可以用这个:

ThemeData(
primaryTextTheme: Typography(platform: TargetPlatform.iOS).white,
textTheme: Typography(platform: TargetPlatform.iOS).white,
)

对于整个应用程序,您可以在 Material应用程序小部件中设置 textTheme属性。

MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
bodyText1: TextStyle(),
bodyText2: TextStyle(),
).apply(
bodyColor: Colors.orange,
displayColor: Colors.blue,
),
),
)

我的是这个:

return MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
bodyText2: TextStyle(
color: Colors.white,
),
),
),
);

我发现在 TextTheme 上使用 CopyWith ()工作得很好,因为你可以只改变特定的属性,比如字体大小,其他的都保持不变。


textTheme: TextTheme().copyWith(
bodyText2: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold
)
),