Как изменить цвет текста TextFormField в соответствии с темой - PullRequest
2 голосов
/ 14 февраля 2020

Я хочу изменить введенный цвет текста в соответствии с текущей темой, поскольку цвет текста не является частью InputDecorationTheme.

enter image description here

As на данный момент единственный возможный способ изменить цвет вводимого текста - это присвоить стиль TextFormField, но он также не работает при изменении темы +, поэтому мне нужно повторить аналогичный код для каждого моего текстового поля, доступного в приложении.

enter image description here

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Вы можете сделать, установив ThemeData, как показано ниже.

 MaterialApp(
  theme: ThemeData(
    textTheme: TextTheme(
      subtitle1: TextStyle(fontSize: 50, fontWeight: FontWeight.bold),
    ),
  )
 ...
1 голос
/ 17 февраля 2020

вы можете сделать, используя свойство subhead внутри TextTheme

 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`

  ),

Блог по стилю текста во флаттере https://medium.com/flutter- сообщество / руководство для начинающих к тексту-style-in-flutter-3939085d6607

ПРИМЕЧАНИЕ: Типографская схема Material Design была значительно изменена в текущем (2018) версия спецификации подробнее https://material.io/design/typography.

2018 spe c имеет тринадцать стилей текста:

 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

где "light" - FontWeight.w300, "normal" - FontWeight.w400, а "medium" - FontWeight.w500.

API [TextTheme] изначально был основан на оригинальной структуре материала (2014) c, в котором использовались разные имена стилей текста. Ради обратной совместимости этот API продолжает раскрывать старые имена. Приведенная ниже таблица должна помочь понять соответствие старых имен API и новых имен (с точки зрения спецификации материала 2018 года).

Каждый из стилей текста [TextTheme] соответствует одному из стили от 2018 спец. c. По умолчанию размеры шрифта, вес шрифта и расстояние между буквами не изменились по сравнению с их исходными значениями 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
1 голос
/ 14 февраля 2020

Вы, похоже, ищете InputDecorationTheme вместо TextTheme.

Требуемое свойство цвета должно быть textTheme.body1.color как:

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

Если не этот, он должен быть другим из textTheme свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...