比如我现在的路由是这样的:Login -> Screen1 -> Screen2 -> Screen3 -> Screen4 我想从Screen4回到Screen2。我不能使用命名路由,因为我必须向 Screen2 传递一个参数。在 Screen4 中推送 Screen2 不是一个好的解决方案。请帮忙,谢谢。
我推了四屏 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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在颤振中执行此操作。
请给出解决方案,谢谢。
如果这很明显,那么Flutter的新人请原谅我,但我已阅读文档并尝试了一堆Navigator选项,但它们都没有按照我的意愿工作.问题集:我们有一系列复杂(良好,半复杂)的屏幕等处理登录/授权/注册过程.这可以在Route堆栈上降低到3或4级.这一切都很好 - 不用担心.
当我们获得一个成功的登录事件(来自几个不同的路径)并想要转到"主页"页面时,问题就出现了.一旦我们在主页上应该是Route树的新"根"(我确信这不是正确的术语 - 但我认为这个想法是可靠的).
所以,考虑到我们可能是1/2/3甚至4级,并希望"弹出"并将整个堆栈(请将任何转换事件)替换为新的顶级根 - 什么神奇的Navigator集或方法将干净利落地做?
我当前(可怕的)方法是手动"pop()"级别并执行Navigator.pushReplacementNamed()调用(这里都是命名路由)但这不是通用解决方案(必须确切知道多少级别)更糟糕的是,它会导致"动画"过渡到屏幕上的"弹出"一瞬间,每个pop()看起来......不是很好.
TIA!
因此,我有这种演练,它将用户从一个屏幕推送到另一个屏幕(总共六个屏幕)。在最后一页中,我希望用户按“完成”,然后将他带回到第一个屏幕,而又无法弹出到先前的任何屏幕。
现在它会弹出最后一个屏幕,但不会弹出任何其他屏幕,因此它使我回到了原来的屏幕,并且能够跳回到最后一个屏幕之前的屏幕(希望最后一句话对您有意义,因为最后一个屏幕弹出后,我需要回到那个屏幕之前)。
任何想法如何解决?
谢谢!