Flutter学习中的问题记录: 如何监听实体返回键和AppBa
2018-07-14 本文已影响116人
jzhu085
效果GIF
![](https://img.haomeiwen.com/i2751425/6ca8b4e1f6fe35b5.gif)
解决
WillPopScope
class RoutePageWithValue extends StatelessWidget {
final String lastPageName;
BuildContext context;
RoutePageWithValue(this.lastPageName);
_showDialog() {
showDialog<Null>(
context: context,
child: new AlertDialog(content: new Text('退出当前界面'), actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.pop(context);
Navigator.of(context).pop();
},
child: new Text('确定'))
]),
);
}
Future<bool> _requestPop() {
_showDialog();
return new Future.value(false);
}
@override
Widget build(BuildContext context) {
this.context = context;
//监听左上角返回和实体返回
return new WillPopScope(
child: new Scaffold(
appBar: new AppBar(
title: new Text('RoutePageWithValue'),
centerTitle: true,
),
body: new Center(
child: new Text('$lastPageName'),
)),
onWillPop: _requestPop);
}
}
如果当前是栈内最后一个页面,或者主界面
_showDialog() {
showDialog<Null>(
context: context,
child: new AlertDialog(content: new Text('退出app'), actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.pop(context);
SystemNavigator.pop();
},
child: new Text('确定'))
]),
);
}