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), ),