在我的主页小部件上,当用户点击系统后退按钮时,我想显示一个确认对话框,询问“您要退出该应用程序吗?”
我不明白如何覆盖或处理系统后退按钮。
您可以使用它WillPopScope来实现。
WillPopScope
例:
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() async { return (await 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"), ), ), ); } }
有关??-operator支票的信息null,请参见此处。这很重要,因为如果您在对话框外单击,showDialog将返回null,在这种情况下将返回false。
??-operator
null
希望能有所帮助!