Flutter - 如何在不使用命名路由的情况下弹出两个屏幕?

Big*_*gto 16 mobile-application flutter

比如我现在的路由是这样的:Login -> Screen1 -> Screen2 -> Screen3 -> Screen4 我想从Screen4回到Screen2。我不能使用命名路由,因为我必须向 Screen2 传递一个参数。在 Screen4 中推送 Screen2 不是一个好的解决方案。请帮忙,谢谢。

Geo*_*rge 38

使用popUntilNavigator 类的方法。

例如

int count = 0;
Navigator.of(context).popUntil((_) => count++ >= 2);
Run Code Online (Sandbox Code Playgroud)

但是,我建议为您的路线定义名称并popUntil按照文档的设计使用。

如果这有帮助,请告诉我。


Yau*_*nka 13

将从其作为 StatefulWidget 进行转换的类。要按下操作,请添加pushNamed带有 的导航器then,该导航器将在返回此屏幕后触发。通过setState更新小部件:

onTap: () {
  Navigator.pushNamed(
    context,
    RouteNames.viewExercises,
  ).then((value) {
    setState(() {});
  });
},
Run Code Online (Sandbox Code Playgroud)

返回使用的屏幕:

Navigator.of(context)
  ..pop()
  ..pop()
  ..pop();
Run Code Online (Sandbox Code Playgroud)

where..pop()可以根据需要多次使用以进行备份。


LgF*_*nco 12

你可以弹出它两次;

nav = Navigator.of(context);
nav.pop();
nav.pop();
Run Code Online (Sandbox Code Playgroud)


小智 6

如果你想弹出三次,你可以使用下面的代码。

int count = 3;
Navigator.of(context).popUntil((_) => count-- <= 0);
Run Code Online (Sandbox Code Playgroud)