Как изменить весь цвет текста темы в Flutter?

Возможно, что-то очевидное, что мне не хватает. Есть ли свойство, которое может изменить цвет всего текста в приложении Flutter?

То, как я делаю это сейчас, в моем MaterialApp:

theme: ThemeData(
    textTheme: Theme.of(context).textTheme.copyWith(
          body1:
              Theme.of(context).textTheme.body1.apply(color: Colors.pink),
          body2:
              Theme.of(context).textTheme.body2.apply(color: Colors.pink),
          display1:
              Theme.of(context).textTheme.display1.apply(color: Colors.pink),
          display2:
              Theme.of(context).textTheme.display2.apply(color: Colors.pink),
          ... // and so on
        ),
    ),
),

Я также пробовал

textTheme: Theme.of(context).textTheme.apply(bodyColor: Colors.pink),

но это относится к выпадающему тексту, а не к регулярному тексту. Аналогично, displayColor применяется к тексту appBar и тексту InputDecoration, но не к регулярному тексту. Кажется, у меня нет никакого decorationText в моем коде, поэтому я не уверен, для чего это нужно.

Я отмечаю, что есть свойство textSelectionColor но это относится только к виджетам TextField.

Ответ 1

Я думаю, что TextTheme.apply - это то, что вы хотите. bodyColor будет применен к headline, title, subhead, button, body1 и body2. displayColor будет применяться для display1 через display4 и caption. Если вы укажете как bodyColor и displayColor и используете displayColor и то же значение цвета, это эффективно изменит цвета текста во всех стилях текста.

Пример:

final newTextTheme = Theme.of(context).textTheme.apply(
  bodyColor: Colors.pink,
  displayColor: Colors.pink,
);

Ответ 2

Чтобы предоставить альтернативу, которая, кажется, работает без установки всех стилей Text непосредственно, заключается в изменении стиля DefaultTextStyle в месте в дереве виджетов, чтобы вступить в силу

return DefaultTextStyle(
  style: TextStyle(color: Colors.pink),
  child: _YOUR_WIDGETS_
)

Ответ 3

Может быть немного поздно... но вы можете использовать это:

ThemeData(
    primaryTextTheme: Typography(platform: TargetPlatform.iOS).white,
    textTheme: Typography(platform: TargetPlatform.iOS).white,
)

Ответ 4

если вы хотите изменить его на старте

    return MaterialApp
    (
        '''

        theme: ThemeData
        (

            canvasColor: Color(0xff30363b),
            textTheme: TextTheme
            (
               //default text style
                body1: TextStyle( color: Color(0xFFD0D6DB) ),
            ),
            backgroundColor: Color(0xff30363b),
        ),


        ,,,

    );

Ответ 5

Для всего приложения вы можете установить свойство textTheme в приложении Material.

MaterialApp(
  theme: ThemeData(
    textTheme: TextTheme(
      body1: TextStyle(),
      body2: TextStyle(),
    ).apply(
      bodyColor: Colors.orange, 
      displayColor: Colors.blue, 
    ),
  ),
)