web-dev-qa-db-fra.com

Comment remplacer le bouton "Retour" dans Flutter?

Sur mon widget Accueil, lorsque l'utilisateur appuie sur le bouton Précédent du système, je souhaite afficher une boîte de dialogue de confirmation vous demandant "Voulez-vous quitter l'application?"

Je ne comprends pas comment remplacer ou manipuler le bouton Précédent du système.

30
Tushar Pol

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 ??-operator vérifie null, voir ici . Ceci est important car si vous cliquez en dehors de la boîte de dialogue, showDialog renvoie null et dans ce cas, false est renvoyé.

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

81
Hemanth Raj