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

#dart #flutter

#dart #flutter

Вопрос:

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

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

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

2. @CopsOnRoad Извините, я вернул это обратно.

3. Не беспокойтесь, спасибо 🙂

Ответ №1:

Вам нужно обернуть ваш корневой виджет в 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(...),
    ],
  ),
);
  

Ответ №2:

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

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

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