【问题标题】:Flutter:- How to back or redirect(Navigation) 3-4 screen previousFlutter:- 如何返回或重定向(导航) 3-4 屏幕上一页
【发布时间】:2021-07-23 14:59:05
【问题描述】:

假设我有 6 个屏幕“A”、“B”、“C”、“D”、“E”、“F”。首先,我必须逐个浏览所有屏幕(A=>B=C=>D=>E=>F)。之后,我想将屏幕“F”重定向到屏幕“C”并且它正在工作。现在我当前的屏幕是“C”,所以我的问题是使用后退按钮或按我的屏幕导航到“E”后。但我想导航到屏幕“B”。

注意:- 我不想在导航时使用 Get.off "D"=>"E"="F"。

我正在为此使用 Get 插件

提前致谢。

【问题讨论】:

    标签: flutter dart flutter-layout flutter-dependencies flutter-navigation


    【解决方案1】:

    你可以使用 popuntil

    • Navigator.of(context).popUntil((route) => route.isFirst);
    • Navigator.of(context).pushNamedAndRemoveUntil('/screen4', ModalRoute.withName('/screen1'));

    ()=> Navigator.pushAndRemoveUntil(
                          context,
                          MaterialPageRoute(builder: (BuildContext context) => LoginPage()),
                          ModalRoute.withName('/'),
                        )
    

    或者只是弹出所有内容然后推送替换。

    Navigator.of(context).pop();
    // More pop
    Navigator.pushReplacement(
          context, MaterialPageRoute(builder: (BuildContext context) => A()));
    }
    

    【讨论】:

      【解决方案2】:

      试试

      Get.offUntil(pageB, (route) => 路由是pageA);

      【讨论】:

      • 感谢您的回复。我已经更新了我的问题,所以根据你的回答我们重新创建了 pageA。
      • 重新创建是什么意思?它清除页面 B 的偏离路线 - 清除所有内容,直到(路线为 PageA)变为“真”。在您的情况下,您可以使用 ((route) => route.isFirst) 代替,它会产生相同的效果 - Get.back 将指向 pageA。
      • 如果更新是关于屏幕 C 只需使用 Get.offUntil(pageC, (route) => route is pageB);
      • 我只想删除屏幕“D”和“E”,而不是整个屏幕,
      • 就是这样,offUntil 不是删除整个路由,而是根据(路由)条件删除它的一部分。从 PageC 调用的 Get.back() 会将您带到 Page B
      猜你喜欢
      • 2020-09-22
      • 2019-12-02
      • 2018-10-06
      • 1970-01-01
      • 2015-02-28
      • 2020-12-30
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多