#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
что isnull
, которая по умолчанию имеет значение baseTextStyle
, как описано в вопросе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)
);