在我的主屏幕小部件上,当用户点击系统返回按钮时,我想显示一个确认对话框,询问“您是否要退出应用程序?”
我不明白如何覆盖或处理系统返回按钮。
在我的主屏幕小部件上,当用户点击系统返回按钮时,我想显示一个确认对话框,询问“您是否要退出应用程序?”
我不明白如何覆盖或处理系统返回按钮。
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"),
),
),
);
}
}
??
运算符用于检查 null
,请参见这里。这很重要,因为如果您在对话框外单击,showDialog 将返回 null
,此时将返回 false。
AppBar
有一个leading
属性,您可以指定一个IconButton
并使用您想要的任何图标或其他任何小部件。 - Hemanth Rajvarvalue ?? false
指令告诉编译器,如果 varvalue 为 null,则返回 false。 - Steve