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

Mar*_*ary 24 text colors 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
        ),
    ),
),
Run Code Online (Sandbox Code Playgroud)

我也试过了

textTheme: Theme.of(context).textTheme.apply(bodyColor: Colors.pink),
Run Code Online (Sandbox Code Playgroud)

但这适用于下拉文本,而不是常规文本.同样,displayColor适用于appBar文本和InputDecoration文本,但不适用于常规文本.我似乎没有任何decorationText代码,所以我不确定那是什么.

我注意到有一个textSelectionColor属性但只适用于TextField小部件.

小智 38

我想TextTheme.apply是你想要的.bodyColor将被应用到headline,title,subhead,button,body1,和body2.displayColor将适用于display1通过display4,和caption.如果同时指定bodyColor,并displayColor与使用相同的颜色值,这将有效地改变所有文本样式文本颜色.

例:

final newTextTheme = Theme.of(context).textTheme.apply(
  bodyColor: Colors.pink,
  displayColor: Colors.pink,
);
Run Code Online (Sandbox Code Playgroud)

  • 字体大小怎么样?如何设置所有页面的字体大小 (3认同)
  • 伟大的!没有意识到组合起来,`bodyColor` 和 `displayColor` 会覆盖所有情况。 (2认同)

Cop*_*oad 36

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

MaterialApp(
  theme: ThemeData(
    textTheme: TextTheme(
      bodyText1: TextStyle(),
      bodyText2: TextStyle(),
    ).apply(
      bodyColor: Colors.orange, 
      displayColor: Colors.blue, 
    ),
  ),
) 
Run Code Online (Sandbox Code Playgroud)


aqw*_*ert 13

要提供一种似乎无需直接设置所有Text样式即可工作的替代方法,就是更改DefaultTextStyleWidget树中该位置的样式以生效

return DefaultTextStyle(
  style: TextStyle(color: Colors.pink),
  child: _YOUR_WIDGETS_
)
Run Code Online (Sandbox Code Playgroud)


小智 7

我正在处理这个:

return MaterialApp(
  theme: ThemeData(
    textTheme: TextTheme(
      bodyText2: TextStyle(
        color: Colors.white,
      ),
    ),
  ),
);
Run Code Online (Sandbox Code Playgroud)


小智 6

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

ThemeData(
    primaryTextTheme: Typography(platform: TargetPlatform.iOS).white,
    textTheme: Typography(platform: TargetPlatform.iOS).white,
)
Run Code Online (Sandbox Code Playgroud)