Как изменить цвет вводимого текста внутри TextFormField или TextField, используя общую тему?

Я знаю, как изменить цвет текста внутри отдельного TextFormField с помощью TextStyle, но я не могу понять, как применить его ко всему приложению с помощью темы.

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

CopsOnRoad 16.12.2019 09:12

@CopsOnRoad Извините, я вернул его.

Nomnom 17.12.2019 17:50

Не беспокойтесь, спасибо :)

CopsOnRoad 17.12.2019 18:01
0
3
47
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно обернуть корневой виджет в Theme и применить data следующим образом. И TextField, и TextFormField будут иметь одинаковый цвет, общую тему.

Theme(
  data: Theme.of(context).copyWith(
    textTheme: Theme.of(context).textTheme.apply(bodyColor: Colors.green),
  ),
  child: Column(
    children: <Widget>[
      TextFormField(...),
      TextField(...),
    ],
  ),
);

Если вы не хотите оборачивать каждую форму/текстовое поле виджетом Theme, вы можете установить свойство subheadtextTheme в исходном ThemeData следующим образом:

ThemeData(
textTheme: TextTheme(
  subhead: TextStyle(color: Colors.green),
),

Хотя, согласно документам, подзаголовок используется для основного текста в списках, поэтому я предполагаю, что это может иметь некоторые нежелательные эффекты, если вы используете списки в другом месте.

Другие вопросы по теме