Получить тему по умолчанию для метки ввода текстового поля

#flutter

#flutter

Вопрос:

Мне нужно создать пользовательский виджет, который находится рядом TextFormField с s, поэтому я должен стилизовать его метку в соответствии TextFormField со стилем метки.

Это НЕ работает:

 Theme.of(ctx).inputDecorationTheme.labelStyle
 

Потому что, согласно его документу:

Если значение равно null, по умолчанию используется значение, полученное из базового [TextStyle] для поля ввода и текущей [Theme].

Проблема в том, что я не знаю, как получить этот базовый стиль.

Комментарии:

1. Theme.of(ctx).inputDecorationTheme.labelStyle для меня все работает нормально. С какой проблемой вы столкнулись?

2. @KeertiPurswani Мне нужно получить цвет и размер шрифта. Когда вы сказали «работает полностью нормально», вы пытались поставить точку останова и посмотреть, соответствует ли значение null ? Это для моего случая.

3. Я вижу текст в цвете и размере шрифта метки. Где и зачем мне ставить точку останова и проверять?

4. @KeertiPurswani попробуйте errorStyle , который должен быть красным. В конечном итоге она не становится красной, потому errorStyle что is null , которая по умолчанию имеет значение base TextStyle , как описано в вопросе

5. @KeertiPurswani ThemeData.fallback().Тема ввода. LabelStyle => null, а также Theme.of(BuildContext).inputDecorationTheme. LabelStyle=> null в flutter 2.2.3, работающем на Android

Ответ №1:

Вы правильно получаете базовый стиль. В моем случае labelStyle и hintStyle from InputDecorationTheme не могут быть обновлены путем горячей перезагрузки, но они работают при повторном запуске приложения.

Ответ №2:

Возможно, это не полный ответ, но я обнаружил, что цвет основан на основном цвете часов. Если вы используете тему light, просто определите primarySwatch, и он это сделает. Для темной темы:

 ThemeData(
      brightness: Brightness.dark, 
      colorScheme: ColorScheme.fromSwatch(
              primarySwatch: Colors.lightBlue, // use your material color
              brightness: Brightness.dark)
);