【问题标题】:How to pop two screens without using named routing?Flutter - 如何在不使用命名路由的情况下弹出两个屏幕?
【发布时间】:2019-11-05 14:10:09
【问题描述】:

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

【问题讨论】:

标签: flutter mobile-application


【解决方案1】:

使用 Navigator 类的popUntil 方法。

例如

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

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

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

【讨论】:

    【解决方案2】:

    你可以弹出两次;

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        要从哪个屏幕返回以使用:

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

        ..pop() 的使用次数可根据需要多次使用。

        【讨论】:

          猜你喜欢
          • 2015-07-29
          • 1970-01-01
          • 2021-12-05
          • 2020-09-03
          • 1970-01-01
          • 1970-01-01
          • 2021-11-19
          • 1970-01-01
          • 2017-12-22
          相关资源
          最近更新 更多