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

bq8i3lrv  于 2023-06-24  发布在  Flutter
关注(0)|答案(5)|浏览(119)

例如,我目前的路由是这样的:

Login -> Screen1 -> Screen2 -> Screen3 -> Screen4

我想从Screen4返回到Screen2。我不能使用命名路由,因为我必须向Screen2传递参数。在Screen4中推送Screen2并不是一个好的解决方案。

aydmsdu9

aydmsdu91#

使用Navigator类的popUntil方法。
例如

int count = 0;
Navigator.of(context).popUntil((_) => count++ >= 2);

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

1mrurvl1

1mrurvl12#

你可以弹两次

nav = Navigator.of(context);
nav.pop();
nav.pop();
wnrlj8wa

wnrlj8wa3#

将从其转换为StatefulWidget的类。要按下action,请添加带有thenpushNamed导航器,它将在返回此屏幕后触发。传递setState以更新小部件:

onTap: () {
  Navigator.pushNamed(
    context,
    RouteNames.viewExercises,
  ).then((value) {
    setState(() {});
  });
},

返回使用的屏幕:

Navigator.of(context)
  ..pop()
  ..pop()
  ..pop();

其中..pop()根据需要多次使用。

vpfxa7rd

vpfxa7rd4#

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

int count = 3;
Navigator.of(context).popUntil((_) => count-- <= 0);
vcudknz3

vcudknz35#

两行。

Navigator.pop(context);
Navigator.of(context, rootNavigator: true).pop();

相关问题