设备后退按钮无法正常工作

时间:2019-06-12 06:29:05

标签: flutter dart

在我的应用程序中,当我单击设备的后退按钮时,它正在关闭应用程序。我使用了Willpopscope,但无法正常工作。但是,当我创建一个示例项目时,它正在工作。谁能解释一下为什么它在现有应用程序中不起作用。我分享了我的代码。

    Future<bool> _onWillPop() {
    return showDialog(
          context: context,
          builder: (context) => new AlertDialog(
                title: new Text('Are you sure?'),
                content: new Text('Unsaved data will be lost.'),
                actions: <Widget>[
                  new FlatButton(
                    onPressed: () => Navigator.of(context).pop(false),
                    child: new Text('No'),
                  ),
                  new FlatButton(
                    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(
            "On Back pressed",
            style: new TextStyle(color: Colors.white),
          ),
        ),
        body: new Center(
          child: new Text("Home Page"),
        ),
      ),
    );
  }

2 个答案:

答案 0 :(得分:0)

将此_onWillPop替换为_onWillPop()async{ return false; }

答案 1 :(得分:0)

WillPopScope#onWillPop如果返回false,则不允许弹出。如果您不想显示AlertDialog,则可以尝试类似的操作。

  @override
  Widget build(BuildContext context) {
    return new WillPopScope(
      onWillPop: () => Future.value(false),
      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"),
        ),
      ),
    );
  }