在我的 Home 小部件上,当用户点击系统后退按钮时,我想显示一个确认对话框,询问“您想退出应用程序吗?”
我不知道该如何重写或处理系统的后退按钮。
您可以使用 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>[ TextButton( onPressed: () => Navigator.of(context).pop(false), child: new Text('No'), ), TextButton( 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