一尘不染

如何在Flutter中更改整个主题的文本颜色?

flutter

可能有些明显的东西我不见了。是否有 一个 属性可以更改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小部件。


阅读 785

收藏
2020-08-13

共1个答案

一尘不染

我想TextTheme.apply就是你想要的。bodyColor将被应用到headlinetitlesubheadbuttonbody1,和body2displayColordisplay1通过display4和应用于caption。如果同时指定bodyColordisplayColor并使用相同的颜色值,则将有效更改所有文本样式上的文本颜色。

例:

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