web-dev-qa-db-fra.com

Comment changer la couleur du texte du thème entier dans Flutter?

Il y a probablement quelque chose d'évident qui me manque. Existe-t-il une propriété one pouvant modifier la couleur de tout le texte d'une application Flutter?

La façon dont je le fais maintenant est, dans mon 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
        ),
    ),
),

J'ai aussi essayé 

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

mais cela s'applique au texte déroulant, pas au texte normal. De même, displayColor s'applique au texte appBar et à un texte InputDecoration, mais pas au texte normal. Je ne semble pas avoir de decorationText dans mon code, je ne suis donc pas sûr de savoir à quoi il correspond.

Je remarque qu'il existe une propriété textSelectionColor mais qui ne s'applique qu'aux widgets TextField.

9
Mary

Je pense que TextTheme.apply est ce que vous voulez. bodyColor sera appliqué à headline, title, subhead, button, body1 et body2. displayColor sera appliqué à display1 à display4 et à caption. Si vous spécifiez à la fois bodyColor et displayColor et utilisez la même valeur de couleur, les couleurs du texte seront modifiées dans tous les styles de texte.

Exemple:

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

Peut-être un peu tard ... mais vous pouvez utiliser ceci:

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

Pour proposer une alternative qui semble fonctionner sans définir directement tous les styles de texte, vous devez modifier le style de la variable DefaultTextStyle à l'emplacement de l'arborescence des widgets pour qu'il prenne effet

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