我正在创建一个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();
},
)
],
);
}
);
}
答案 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();
});
},