Flutter 使用 auto_route 删除所有路由

标签 flutter flutter-bloc flutter-navigation flutter-routes

如果出现错误,我想将用户再次重定向到同一流程(以便重置流程状态)。

我正在使用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/

相关文章:

android - 用于嵌套导航的 Flutter WillPopScope

Flutter,设置具有多个堆栈的屏幕

flutter - 在 Flutter 中显示来自互联网的图像

user-interface - 如何使DropdownButtonFormField占用尽可能小的空间?

flutter-bloc - 卡住 - 一组密封类,其中一些具有其他人没有的字段 - 导致 bloc.state 无法访问缺少的字段

Flutter BLoC - Bloc vs Cubit 事件驱动状态管理优势

flutter - 如何在一个区 block 中收听多个流订阅?

flutter - 可以使用 Flutter 复制 iOS App Store 过渡吗?

flutter - 错误:无法解析 'rxdart'中的 'package:rxdart/rxdart.dart'软件包

animation - 对容器窗口小部件进行动画处理,使屏幕向左移动