131 votes

Comment remplacer le bouton "Retour" dans Flutter ?

Sur mon widget d'accueil, lorsque l'utilisateur appuie sur le bouton retour du système, je veux afficher une boîte de dialogue de confirmation demandant "Voulez-vous quitter l'application ?".

Je ne comprends pas comment je dois remplacer ou gérer le bouton retour du système.

289voto

Hemanth Raj Points 7436

Vous pouvez utiliser WillPopScope pour y parvenir.

Exemple :

import 'dart:async';

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  HomePage({Key key, this.title}) :super(key: key);

  final String title;

  @override
  State<StatefulWidget> createState() => new _HomePageState();
}

class _HomePageState extends State<HomePage> {

  Future<bool> _onWillPop() {
    return showDialog(
      context: context,
      builder: (context) => new AlertDialog(
        title: new Text('Are you sure?'),
        content: new Text('Do you want to exit an App'),
        actions: <Widget>[
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: new Text('No'),
          ),
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(true),
            child: new Text('Yes'),
          ),
        ],
      ),
    ) ?? false;
  }

  @override
  Widget build(BuildContext context) {
    return new WillPopScope(
      onWillPop: _onWillPop,
      child: new Scaffold(
        appBar: new AppBar(
          title: new Text("Home Page"),
        ),
        body: new Center(
          child: new Text("Home Page"),
        ),
      ),
    );
  }
}

Le site ??-operator contrôles pour null voir ici . Ceci est important car si vous cliquez en dehors de la boîte de dialogue, showDialog retourne null et dans ce cas, false est retourné.

J'espère que ça vous a aidé !

5 votes

L'enfant de showDialog est déprécié. Vous devriez utiliser un constructeur maintenant.

6 votes

Merci, j'ai mis à jour la réponse :)

0 votes

Peut-on aussi changer l'icône du bouton retour ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X