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

时间:2019-06-23 15:16:12

标签: flutter mobile-application

例如,我当前的路由如下: 登录->屏幕1->屏幕2->屏幕3->屏幕4 我想从Screen4回到Screen2。 我不能使用命名路由,因为我必须将参数传递给Screen2。 在Screen4中推送Screen2不是一个好的解决方案。 请帮助,谢谢。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

使用Navigator类的popUntil方法。

例如

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

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

让我知道这是否有帮助。

答案 2 :(得分:0)

您可以将其弹出两次;

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

答案 3 :(得分:0)

将作为 StatefulWidget 进行转换的类。要按操作添加带有 pushNamedthen 导航器,它将在返回到此屏幕后触发。传递 setState 以更新小部件:

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

返回使用的屏幕:

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

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