如何根据主题更改TextFormField的文本颜色

时间:2020-02-14 12:55:46

标签: flutter dart flutter-layout

我想根据当前主题更改输入的文本颜色,因为文本颜色不是InputDecorationTheme的一部分。

enter image description here

到目前为止,更改输入文字颜色的唯一可能方法是为TextFormField赋予样式,但是当主题更改时也无法正常工作+这样,我需要为每个文本重复类似的代码应用程序中可用的字段。

enter image description here

3 个答案:

答案 0 :(得分:1)

您似乎在看InputDecorationTheme,而不是TextTheme

您要查找的颜色属性应为textTheme.body1.color,如下所示:

Theme.of(context).textTheme.body1.color

如果不是这个,则应该是textTheme属性的另一个。

答案 1 :(得分:1)

您可以通过如下设置ThemeData来实现。

 MaterialApp(
  theme: ThemeData(
    textTheme: TextTheme(
      subtitle1: TextStyle(fontSize: 50, fontWeight: FontWeight.bold),
    ),
  )
 ...

答案 2 :(得分:1)

您可以使用TextTheme内的属性 subhead

 theme: ThemeData( 
    brightness: Brightness.dark,
    primaryColor: Colors.orange,
    accentColor: Colors.green,
    textTheme: TextTheme(
      subhead: TextStyle(color: Colors.blue),
    ),
  ),

或使用此方法:

 theme: ThemeData(
      brightness: Brightness.dark,
      primaryColor: Colors.orange,
      accentColor: Colors.green,
      textTheme: Theme.of(context)
          .textTheme
          .apply(bodyColor: Colors.red)`enter code here`

  ),

关于Flutter https://medium.com/flutter- community/beginners-guide-to-text-styling-in-flutter-3939085d6607中的文本样式的博客

注意:“材料设计”版式设计方案在 规范的最新版本(2018) 更多信息https://material.io/design/typography

2018年规范具有13种文字样式:

 NAME         SIZE  WEIGHT  SPACING
 headline1    96.0  light   -1.5
 headline2    60.0  light   -0.5
 headline3    48.0  regular  0.0
 headline4    34.0  regular  0.25
 headline5    24.0  regular  0.0
 headline6    20.0  medium   0.15
 subtitle1    16.0  regular  0.15
 subtitle2    14.0  medium   0.1
 body1        16.0  regular  0.5   (bodyText1)
 body2        14.0  regular  0.25  (bodyText2)
 button       14.0  medium   1.25
 caption      12.0  regular  0.4
 overline     10.0  regular  1.5

其中“光”为FontWeight.w300,“常规”为FontWeight.w400, “中”是FontWeight.w500

[TextTheme] API最初基于原始材料(2014年) 设计规范,它使用了不同的文本样式名称。向后 出于兼容性考虑,此API继续公开旧名称。桌子 以下内容应有助于理解API旧名称的映射,以及 新名称(根据2018年材料规范的名称)。

每种[TextTheme]文本样式都对应一种 2018年规格的款式。默认情况下,字体大小,字体粗细 并且字母间距与原始间距没有变化, 2014,价值观。

 NAME       SIZE   WEIGHT   SPACING  2018 NAME
 display4   112.0  thin     0.0      headline1
 display3   56.0   normal   0.0      headline2
 display2   45.0   normal   0.0      headline3
 display1   34.0   normal   0.0      headline4
 headline   24.0   normal   0.0      headline5
 title      20.0   medium   0.0      headline6
 subhead    16.0   normal   0.0      subtitle1
 body2      14.0   medium   0.0      body1 (bodyText1)
 body1      14.0   normal   0.0      body2 (bodyText2)
 caption    12.0   normal   0.0      caption
 button     14.0   medium   0.0      button
 subtitle   14.0   medium   0.0      subtitle2
 overline   10.0   normal   0.0      overline