例如,我目前的路由是这样的:
Login -> Screen1 -> Screen2 -> Screen3 -> Screen4
我想从Screen4返回到Screen2。我不能使用命名路由,因为我必须向Screen2传递参数。在Screen4中推送Screen2并不是一个好的解决方案。
Screen4
Screen2
aydmsdu91#
使用Navigator类的popUntil方法。例如
popUntil
int count = 0; Navigator.of(context).popUntil((_) => count++ >= 2);
但是,我建议您定义路由的名称,并使用popUntil,因为它是按照文档设计的。
1mrurvl12#
你可以弹两次
nav = Navigator.of(context); nav.pop(); nav.pop();
wnrlj8wa3#
将从其转换为StatefulWidget的类。要按下action,请添加带有then的pushNamed导航器,它将在返回此屏幕后触发。传递setState以更新小部件:
then
pushNamed
setState
onTap: () { Navigator.pushNamed( context, RouteNames.viewExercises, ).then((value) { setState(() {}); }); },
返回使用的屏幕:
Navigator.of(context) ..pop() ..pop() ..pop();
其中..pop()根据需要多次使用。
..pop()
vpfxa7rd4#
如果你想弹出直到三次,你可以使用下面的代码.
int count = 3; Navigator.of(context).popUntil((_) => count-- <= 0);
vcudknz35#
两行。
Navigator.pop(context); Navigator.of(context, rootNavigator: true).pop();
5条答案
按热度按时间aydmsdu91#
使用Navigator类的
popUntil
方法。例如
但是,我建议您定义路由的名称,并使用
popUntil
,因为它是按照文档设计的。1mrurvl12#
你可以弹两次
wnrlj8wa3#
将从其转换为StatefulWidget的类。要按下action,请添加带有
then
的pushNamed
导航器,它将在返回此屏幕后触发。传递setState
以更新小部件:返回使用的屏幕:
其中
..pop()
根据需要多次使用。vpfxa7rd4#
如果你想弹出直到三次,你可以使用下面的代码.
vcudknz35#
两行。