web-dev-qa-db-fra.com

Comment puis-je rejeter un AlertDialog sur un clic FlatButton?

J'ai la suivante AlertDialog.

showDialog(
            context: context,
            child: new AlertDialog(
              title: const Text("Location disabled"),
              content: const Text(
                  """
Location is disabled on this device. Please enable it and try again.
                  """),
              actions: [
                new FlatButton(
                  child: const Text("Ok"),
                  onPressed: _dismissDialog,
                ),
              ],
            ),
        );

Comment puis-je faire _dismissDialog() rejeter dit AlertDialog?

21
Gustash

Navigator.pop() devrait faire l'affaire. Vous pouvez également l'utiliser pour renvoyer le résultat de la boîte de dialogue (si elle a présenté des choix à l'utilisateur)

37
Collin Jackson
Navigator.of(context, rootNavigator: true).pop('dialog')

travaillé avec moi.

Vous pouvez utiliser l'un des éléments suivants:

Navigator.of(context).pop();
Navigator.pop(context);
4
CopsOnRoad
Navigator.pop(_)

a fonctionné pour moi, mais la galerie de l'équipe Flutter contient un exemple utilisant:

Navigator.of(context, rootNavigator: true).pop()

qui fonctionne aussi, et je suis tenté de suivre leur exemple.

2
Bryon Nicoson

La réponse acceptée indique comment fermer une boîte de dialogue à l'aide de la classe de navigation. Pour fermer une boîte de dialogue sans utiliser Navigator, vous pouvez définir l'événement onPressed du bouton comme suit:

setState((){
  thisAlertDialog = null; 
});

Dans le cas où le code ci-dessus n'est pas explicite, il définit fondamentalement le parent AlertDialog du FlatButton sur null et le supprime.

0
Questionare232