如何在颤动中弹出到特定屏幕

Posted

技术标签:

【中文标题】如何在颤动中弹出到特定屏幕【英文标题】:How can I pop to specific screen in flutter 【发布时间】:2020-03-31 10:19:54 【问题描述】:

我推了四个屏幕 ScreenOne >> ScreenTwo >> ScreenThree >> ScreenFour

我现在在 ScreenFour,我想跳回 ScreenTwo

在 Swift 中它是这样工作的::

if let viewControllers: [UIViewController] = self.navigationController!.viewControllers 
    for vc in viewControllers
    
        if (vc is SecondViewController)
        
            self.navigationController!.popToViewController(vc, animated: true)
        
    

我如何在颤振中执行此操作。

请给出解决方案,谢谢

【问题讨论】:

关注这个:***.com/questions/49672706/… 这可能对你有帮助link 【参考方案1】:

如果您没有在 MaterialApp 中定义任何路由,则需要在推送时定义。

Navigator.of(context).push(
    MaterialPageRoute(builder: (_) 
      return SecondPage();
    ,
      settings: RouteSettings(name: 'SecondPage',),
    ));

需要定义相同的路由名称

Navigator.of(context).popUntil((route)
  return route.settings.name == 'SecondPage';
); 

【讨论】:

【参考方案2】:

我相信那是 Navigator.popUntil 方法。

您需要在您的 materialApp 中定义您的路线,以便 Navigator 识别它。为了使下面的代码正常工作,需要在我的 MaterialApp 中定义“/home”。

Navigator.popUntil(context, ModalRoute.withName('/home'));

【讨论】:

【参考方案3】:

试试pushNamedAndRemoveUntil

        Navigator.of(context).pushNamedAndRemoveUntil(
            '/BottomNavigation', (Route<dynamic> route) => false);

如需深入阅读,请关注this

【讨论】:

【参考方案4】:

如果您不想使用命名路由,那么只需使用-- pushAndRemoveUntil

例子--

Navigator.pushAndRemoveUntil(context, MaterialPageRoute(
                          builder: (context) => MyHomePage()), (route) => false);

【讨论】:

以上是关于如何在颤动中弹出到特定屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swiftui 中弹出到 TabView 应用程序中的特定视图。我也使用了 StackNavigation 但不在 swiftui 中工作

如何在颤动中从导航器堆栈中弹出最后三个路由

我应该如何弹出到特定的视图控制器?

在导航控制器中弹出到根视图

如何在 Flutter 中弹出时清除页面

如何在颤动中将商品计数从购物车屏幕更新到餐厅详细信息屏幕并返回到餐厅详细信息屏幕?