如果出现错误,我想将用户再次重定向到同一流程(以便重置流程状态)。
我正在使用auto_route导航包,我可以看到 router.replace 和 router.replaceAll 不会再次替换(从堆栈中删除和插入)相同的路由(它只是更新它们)。
来自官方文档:
// removes last entry in stack and pushs provided route
// if last entry == provided route page will just be updated
router.replace(const BooksListRoute())
// This's like providing a completely new stack as it rebuilds the stack
// with the list of passed routes
// entires might just update if already exist
router.replaceAll([
LoginRoute()
]);
如何使用 auto_route
包“硬重置”替换一条路线或一组路线?
最佳答案
已解决。
为了使用auto_route“硬重置”同一页面包,使用 pushAndPopUntil
函数,并将 predicate
设置为始终 false
。
这样,所有页面都将被删除,并且所提供的堆栈将被插入(换句话说,即使是同一页面,也是完全替换)。
然后您的页面将重新启动,并且所有状态值都将重置(与重定向到新页面相同)。
await _router.pushAndPopUntil(
const LoginRoute(),
predicate: (_) => false,
)
关于Flutter 使用 auto_route 删除所有路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73771086/