Flutter - 推送到新页面后关闭对话框

Hap*_*ris 6 flutter

我目前正在创建一个待办事项应用程序,如果我长按一个任务磁贴,它会弹出一个显示对话框。重定向到编辑页面后,您可以编辑和保存更改。但是,一旦完成,您将被重定向到主页,但会受到前一个对话框的欢迎 如何在您被引导到编辑页面后关闭该对话框?

这是显示对话框的代码:

Future _showAlert(data) async{
return showDialog<Null>(
  context: context,
  barrierDismissible: true,
  builder: (BuildContext context) {
    return new AlertDialog(
      title: new Text('Would you like to make changes?', style: new TextStyle(fontSize: 17.0)),
      actions: <Widget>[
        new FlatButton(
          child: new Text('Edit'),
          onPressed: (){
            Navigator.push(context, new MaterialPageRoute(builder: (context) => new EditTodoPage(todo: data, todoID: selectedTodoId,)));
          },
        ),
        new FlatButton(
          child: new Text('Delete'),
          onPressed: (){
            _delete(selectedTodoId);
            Navigator.of(context).pop();
          },
        )
      ],
    );
  }
);
Run Code Online (Sandbox Code Playgroud)

}

ber*_*boy 6

Navigator.push返回Navigator.pop在您的编辑页面上调用后完成的 Future 。

之后您可以关闭对话框,如下所示:

onPressed: () {
  Navigator.push(/* ... */)
    .then((result) {
      Navigator.of(context).pop();
    });
},
Run Code Online (Sandbox Code Playgroud)


Rém*_*let 4

而不是简单地调用pop您可以popUntil.

实现的一个例子是“po​​p直到路由'/'”,这应该是你的家。

Navigator.popUntil(context, (route) {
  return route.settings.name == "/";
});
Run Code Online (Sandbox Code Playgroud)