J'essaye d'appeler une fonction sur un onPressed dans Flutter.
J'ai essayé
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
and
void _showDialog() {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Title"),
content: Text("Body"),
actions: <Widget>[
FlatButton(
child: Text("Close"),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
et
onPressed: () => _showDialog,
4 Réponses :
Vous devriez essayer comme suit:
secondary: IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
ou
onPressed: () => _showDialog(),
ou
onPressed: _showDialog,
UPDATE
Solution simple: supprimez le mot clé const
onPressed: (){
_showDialog();
},
Je reçois toujours l'erreur "Valeur constante non valide"
pourriez-vous ajouter le journal des erreurs? ajoutez également le code lorsque vous appelez
Désolé mon code ne fonctionne pas donc il n'y a pas de journal des erreurs. _showDialog est souligné en rouge et lorsque la souris est placée dessus, l'erreur est indiquée comme "Valeur constante non valide". J'ai mis à jour ma question avec le code.
Merci. J'ai mis à jour ma question avec la capture d'écran.
Même problème ici, une solution?
C'est parce que sur votre arbre supérieur, il y a quelque part un autre "const" (ou même plus d'un). Tracez tout jusqu'à la racine et supprimez tous les mots-clés "const" que vous trouvez.
Supprimez le mot clé const
Votre code
secondary: IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
Mis à jour
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
la réponse est telle qu'elle était à mon avis et il est possible d'avoir les mêmes réponses. mais est-ce mal de faire cela?
oui, à l'avenir, les gens viendraient pour trouver une solution à leurs problèmes et il leur serait plus difficile de lire toutes les réponses. si votre solution était déjà mentionnée, vous pourriez simplement la voter.
Pour certains scénarios, vous pouvez déclarer une fonction de niveau supérieur ou statique:
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: myHandler,
),
...
static void myHandler() {
_showDialog();
}
Uniquement dans ce cas ( top-level ou static) myHandler peut être traité comme une constante et passé au constructeur de constantes.
Vous devez vérifier et supprimer le contanier (widget) const
comme ceci
child: TextFormField(
decoration:InputDecoration(
...
)
child: TextFormField(
decoration: **const** InputDecoration(
prefixIcon: Icon(Icons.person),
suffixIcon: IconButton(
icon: Icon(Icons.remove_red_eye),
onPressed: showPassword,
),
labelText: "Name *",
hintText: "Your Github account username",
),
)
une bonne et claire question