Как изменить весь цвет текста темы в 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,
),
),
)