当我单击设备后退按钮应用程序时关闭

时间:2019-08-09 12:03:41

标签: flutter dart

当我单击应用程序栏的后退按钮时,它会转到上一页。但是,当点击设备后退按钮时,应用会关闭。请告诉我会发生什么。

@override
  Widget build(BuildContext context) {
    return ScopedModelDescendant(
      builder: (BuildContext context, Widget child, MainModel model) {
        return WillPopScope(
          onWillPop: ()async{
            return true;
          },
          child: Scaffold(
          appBar: AppBar(
            title: Text('Add User Info'),
          ),
          body: Container(
            padding: EdgeInsets.all(10.0),
            child: _buildOrderForm(model),
          ),
        ),
        );
      },
    );
  }

2 个答案:

答案 0 :(得分:0)

您已经在使用WillPopScope了!但是,我发现您尚未正确实施的一件事是:

onWillPop: ()async{
    return true;
},

您需要返回Future中的false才能禁用弹出的路由。在此处查看更多信息:

https://api.flutter.dev/flutter/widgets/WillPopScope/onWillPop.html

  

如果回调函数返回的Future解析为false,则包含   路线不会弹出。

这应该有效:

onWillPop: () => Future<bool>.value(false),

答案 1 :(得分:0)

小部件WillPopScope的方法必须用作根用户

  @override
  Widget build(BuildContext context) {
    return new WillPopScope(
      onWillPop: _onBackPressed,
      child: new Scaffold(
        appBar: new AppBar(
          title: new Text(
            "On Back pressed",
            style: new TextStyle(color: Colors.white),
          ),
        ),
        body: new Center(
          child: new Text("Home Page"),
        ),
      ),
    );
  }

在上面的代码段中,我们编写了一个_onBackPressed方法。当您从移动硬件按钮上按回时,它将调用。