J'essaie de migrer mon FlatButton
vers textButton
. Depuis FlatButtons
sont obsolètes car j'ai mis à niveau ma version Flutter. Je suis actuellement aux prises avec l'adaptation de la couleur d'arrière-plan.
Old Bouton:
TextButton( onPressed: onPressed, style: ButtonStyle(backgroundColor: Colors.red), // <-- Does not work child: Text(label, style: TextStyle(color: fontColor, fontWeight: boldLabel ? FontWeight.bold : FontWeight.normal)), ),
nouveau bouton:
FlatButton( height: height, onPressed: onPressed, shape: baseButtonBorder, color: Colors.red, child: Text(label, style: TextStyle(color: fontColor, fontWeight: boldLabel ? FontWeight.bold : FontWeight.normal)), )`
Le bouton plat n'a pas d'attribut couleur
, j'ai donc essayé d'utiliser l'attribut style
et d'ajouter un Buttonstyle
. Cependant, la Dart dit:
Le type d'argument 'MaterialColor' ne peut pas être affecté au type de paramètre 'MaterialStateProperty
Comment peut Je stylise mon textbutton
avec la couleur rouge comme je le faisais avec mon flatbutton
? Dois-je créer un MaterialStateProperty
avec le rouge?
4 Réponses :
Essayez de cette façon,
TextButton( onPressed: () {}, child: Container( padding: EdgeInsets.fromLTRB(30, 10, 30, 10), color: Colors.red, child: Text(""), ), )
BackgroundColor
La propriété est MaterialStateProperty
Type. Vous pouvez vérifier Documentation Flutter .
Vous devez donc utiliser Classe MaterialStateProperty
Pour appliquer la couleur. Un exemple rapide:
TextButton( child: Text('test'), style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.red)), onPressed: () {}, ),
Puis-je demander pourquoi je dois utiliser MaterialStateProperty.all
? Pourquoi ne puis-je pas utiliser couleurs.red
directement?
Comme le dit la documentation, bacgroundcolor
n'est pas colori
type, vous ne pouvez donc pas utiliser couleurs.red
. Vous pouvez trouver plus de détails sur MaterialStateProperty
dans la documentation Flutter: api.flutter.dev/flutter/material/…
Pour les personnes à la recherche d'un moyen plus clair et plus facile de le faire, vous pouvez utiliser textButton.styleFrom ()
. Exemple:
TextButton( child: Text('Example'), onPressed: () {}, style: TextButton.styleFrom(backgroundColor: Colors.red), )
Vous pouvez personnaliser presque tout ce que vous voulez dans StyleFrom. Cela fonctionne également pour d'autres boutons, comme eleatedbutton
et suintinébutton
.
Nice, court et simple. Merci!
moyen le plus facile d'ajouter un fond de fond à TextButton
TextButton ( Style: textButton.styleFrom (BackgroundColor: Colors.Red), ),