我正在使用Flutter的AutoRoute包。
我使用自动路由包生成了以下两个屏幕
HomeRoute()
ProductsRoute()
然后从HomeRoute
开始,我执行以下操作,
context.router.push(const ProductsRoute());
然后在ProductRoute
中,我调用initState
中的API,如果发生错误,我将显示一个弹出窗口,显示Something went wrong!
。这里,
我想弹出警报,然后弹出ProductsRoute()
,以便用户导航回HomeRoute()
因此,使用AutoRoute
,我做了以下操作,
context.router.popUntil((route) => route.settings.name == 'HomeRoute')
这不起作用。它把我带到一个白色屏幕。
然而,如果我做两次context.route.pop()
,它确实有效。
有人能告诉我我做错了什么吗?我如何使用Auto Route软件包导航回HomeRoute()
?
谢谢。
context.router.popUntil((route) => route.name == 'HomeRoute')
或
context.router.popUntilRouteWithName('HomeRoute')
我发现了问题,
有了popUntil
,如果我想去HomeRoute
,我不应该提到HomeRoute
。相反,我应该提到HomeRoute
之后的堆栈上的路由。然后它开始工作,
例如,假设我有以下堆栈,
屏幕A->屏幕B->屏幕C->ScreenD
现在,如果我想让用户通过弹出screen D
的所有屏幕来显示screen A
,
我应该这样做,
context.router.popUntilRouteWithName(ScreenBRoute.name); // <---- Should do
不
context.router.popUntilRouteWithName(ScreenARoute.name); // <---- Should not do