如何关闭(弹出)Flutter应用程序中的所有类似路由?

qlckcl4x  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(158)

在我的应用程序中,我有7+屏幕。我正在使用命名的路由。screen1是默认的第一页..
我必须关闭screen4时点击返回按钮从screen4和需要去screen3,在这种情况下,有多个screen4在路由树(背靠背,如1 2 3 4 4 4 4)。我想一键关闭所有屏幕4。
我尝试了下面的代码,但上下文总是给出'screen4',所以它关闭到screen2

while (ModalRoute.of(context)!.settings.name ==
   'screen4' &&   Navigator.of(context).canPop()) {
        if (mounted) {
           Navigator.of(context).pop(true);
        }
}

我需要将true传递给screen3,所以在此之前不能使用pop

xhv8bpkk

xhv8bpkk1#

popuntil仍然可以用于您提到的场景:

Navigator.of(context)
    .popUntil((Route route) => route.settings.name != 'screen4');

这将把你从

如果您还有其他条件,请在popuntil中应用它们

相关问题