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

时间:2018-05-06 01:04:54

标签: flutter

我正在创建一个todo应用程序,如果我长按任务图块,它会弹出一个显示对话框。重定向到编辑页面后,您可以编辑并保存更改。但是,一旦完成,您将被重定向到主页,但将受到上一个对话框的欢迎。在您被定向到编辑页面后如何解除对话框?

以下是show对话框的代码:

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();
          },
        )
      ],
    );
  }
);

}

2 个答案:

答案 0 :(得分:3)

您可以使用pop,而不是简单地调用popUntil返回主页。

实施的一个例子是“直到路线'/'”,这应该是你的家。

Navigator.popUntil(context, (route) {
  return route.settings.name == "/";
});

答案 1 :(得分:1)

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

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

onPressed: () {
  Navigator.push(/* ... */)
    .then((result) {
      Navigator.of(context).pop();
    });
},