Comment puis-je désactiver un Bouton dans le Flutter?
Je viens juste de commencer à obtenir le blocage de Flottement, mais je vais avoir de la difficulté à trouver comment définir l'état d'un bouton.
De la doc, il est dit pour définir onPressed
à null pour désactiver un bouton, et de lui donner une valeur pour l'activer. C'est bien si le bouton continue à être dans le même état pour le cycle de vie.
J'ai l'impression j'ai besoin de créer un personnalisé Stateful widget qui me permettra de mettre à jour le bouton de l'état activé (ou onPressed de rappel) en quelque sorte.
Donc ma question est comment dois-je procéder? Cela semble assez simple, mais je ne peux pas trouver quelque chose dans les docs sur la façon de le faire.
Grâce.
OriginalL'auteur chris84948 | 2018-03-18
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez introduire des fonctions d'aide à
build
votre bouton ainsi que d'un Stateful widget de pair avec une certaine propriété d'.isButtonDisabled
)onPressed
valeur soitnull
ou une fonctiononPressed: () {}
isButtonDisabled
dans le cadre de cette condition et retour soitnull
ou d'une fonction.setState(() => isButtonDisabled = true)
pour inverser la variable de condition.build()
méthode à nouveau avec le nouvel état et le bouton sera affiché avec unnull
appuyez sur gestionnaire et être désactivé.Ici, c'est peu plus de contexte à l'aide d'un battement de contre projet.
Dans cet exemple, je suis en utilisant une ligne ternaire de manière conditionnelle le
Text
etonPressed
, mais il peut être plus approprié pour vous afin de l'extraire dans une fonction (vous pouvez utiliser cette même méthode pour changer le texte du bouton):aimeriez-vous à "accepter" la réponse est ou était-il d'autres remarques nous devions ajouter?
Je pense que c'est bon. J'ai accepté la réponse tout à l'arrière.
Vous avez besoin d'ajouter du gras flèche fonction comme argument, sinon le _incrementCounter() va être appelé immédiatement lorsque le bouton est activé. De cette façon, il va vraiment attendre jusqu'à ce que le bouton est cliqué: Le onPressed devrait ressembler à ceci:
onPressed: _isButtonDisabled ? null : () => _incrementCounter
c'est généralement vrai, mais la _counterButtonPress() retourne une fonction
return () {}
si c'est intentionnel. Je ne veux pas utiliser la graisse flèche ici que je veux la fonction à remplir et de retourner lanull
et désactiver le bouton.OriginalL'auteur Ashton Thomas
Selon les docs:
"Si le onPressed de rappel est nulle, alors le bouton sera désactivé et par défaut ressemble à un bouton plat dans le disabledColor."
https://docs.flutter.io/flutter/material/RaisedButton-class.html
Donc, vous pourriez faire quelque chose comme ceci:
disabledElevation
,disabledColor
etDisabledTextColor
ne fonctionne pas comme prévu.OriginalL'auteur Steve Alexander
La réponse est simple,
onPressed : null
donne un bouton désactivé.OriginalL'auteur Mercy peka
Pour un nombre limité de widgets, les enveloppant dans un widget IgnorePointer fait exactement ceci: lorsque son
ignoring
propriété est définie sur true, le sous-widget (en fait, toute la sous-arborescence) n'est pas cliquable.Sinon, si vous avez l'intention de désactiver l'intégralité d'un sous-arbre, regarder dans AbsorbPointer().
OriginalL'auteur edmond
Vous pouvez activer ou désactiver les boutons, comme cet
OriginalL'auteur CopsOnRoad
Vous pouvez également utiliser le AbsorbPointer, et vous pouvez l'utiliser de la manière suivante:
Si vous voulez en savoir plus sur ce widget, vous pouvez consulter le lien suivant Flutter Docs
OriginalL'auteur Juan E. Londoño T.