0

我正在尝试 pushNamedAndRemoveUntil 但我注意到我的谓词不断返回 null 作为路由。

我的代码:

Navigator.pushNamedAndRemoveUntil(
  context, 'search/studyPage',
  (Route<dynamic> route) {
    print(route);
    return false; // im returning false to illustrate that all the routes being "popped" are all returning null
    }, 
  arguments: StudyPageArgs(widget.study)
);

这打印:

MaterialPageRoute<dynamic>(RouteSettings("null", null), 
animation: AnimationController#117d7(⏭ 1.000; paused; 
for MaterialPageRoute<dynamic>(null)))
MaterialPageRoute<dynamic>(RouteSettings("null", null), 
animation: AnimationController#117d7(⏭ 1.000; paused; 
for MaterialPageRoute<dynamic>(null)))
MaterialPageRoute<dynamic>(RouteSettings("null", null), 
animation: AnimationController#117d7(⏭ 1.000; paused; 
for MaterialPageRoute<dynamic>(null)))
MaterialPageRoute<dynamic>(RouteSettings("null", null), 
animation: AnimationController#117d7(⏭ 1.000; paused; 
for MaterialPageRoute<dynamic>(null)))

当我这样做时,我可以推到我以前的路线,但从那里弹出只会给我一个空白屏幕。这是因为谓词一直返回 null,所以之前的所有路由都从树中删除。知道发生了什么吗?

请记住,我使用的是嵌套导航器设置,与我在此处的其他问题相同:(带有嵌套导航器的 .popUntil

谢谢

4

2 回答 2

1

settings参数是必要的:

MaterialPageRoute(builder: builder, settings:  settings
于 2020-07-09T11:59:56.957 回答
0

我想出了一个hacky和糟糕的方法来做到这一点。它仍然有效

Navigator.pushNamedAndRemoveUntil(
  context, 'search/studyPage',
  (Route<dynamic> route) {
setState(() {
  _popper = _popper + 1;
});
if (_popper == 4) {
  return true;
} else {
  return false;
}
}, arguments: StudyPageArgs(widget.study));
于 2019-10-26T22:47:48.827 回答