Flutter中文社区Android开发经验谈Flutter圈子

Flutter学习中的问题记录: 如何监听实体返回键和AppBa

2018-07-14  本文已影响116人  jzhu085

效果GIF

route.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('确定'))
      ]),
    );
  }

实战代码已经上传到我的GITHUB ZhihuDailyPurifyByFlutter

基础学习过程中的代码都放在GITHUB Flutter_Study

每天学一点,学到Flutter发布正式版!

上一篇下一篇

猜你喜欢

热点阅读