如何解决来自对话框时 Navigator.pushReplacement() 不起作用
我有一种方法可以进行推送替换:
_buyAgain() {
_bloc.buyAgain();
Navigator.pushReplacement(context,MaterialPageRoute(
builder: (context) =>
_widgetFactory.createCartScreen()));
}
上面的方法可以从普通上下文或对话框上下文中调用,代码如下:
if (_bloc.shouldShowNonEmptyCartWarning()) {
showDialog(
context: context,builder: (BuildContext context) {
return AlertDialog(
content: Text(static.translate(
context,'orderDetail_nonEmptyCartWarning')),actions: <Widget>[
FlatButton(
child:
Text(static.translate(context,'app_cancel')),onPressed: () {
Navigator.pop(context);
},),FlatButton(
child:
Text(static.translate(context,'app_accept')),onPressed: () {
_buyAgain();
Navigator.pop(context);
},],);
});
} else {
_buyAgain();
}
问题是,如果从对话框中的选项中调用该方法,则不会发生推送替换。如果在 else 块中调用了 _buyAgain(),则按预期工作。
我做错了什么?
解决方法
在 Navigator.pop(context);
之后调用 _buyAgain();
将弹出堆栈顶部的任何屏幕。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。