美文网首页Flutter 开发技巧flutter
Flutter 中路由 使用 Fluro 解决Navigator

Flutter 中路由 使用 Fluro 解决Navigator

作者: mark666 | 来源:发表于2020-07-27 16:52 被阅读0次

    目前Flutter 中路由使用第三方库最多的是 fluro,
    因为看网上很多人网上推荐使用,所以有幸入坑了,官网上介绍了简单的使用方法,
    使用起来也比较方便,但是不能完全满足我们的需求,例如路由机制我们常见的需求,

    fluro暴露方法极少

    1.参数回调

    我们查看上图中 fluropop 方法是没有返回值的,我们就需要调用原生的

    Navigator.of(context).pop(参数)
    
    1. 从A->B->C->D 结束后返回A页面

    这个框架竟然没有任何解决方案,我查看它的 issue 中有人提出了这个问题

    我也查找了网上很多解决方案,大多数是基于原生的路由管理机制处理,
    最为靠谱的是

    Navigator.popUntil(context, ModalRoute.withName(路由名字));
    

    我在开始尝试中,一执行就会报 Bad state: No element 这个错误,提醒我元素不存在,可是明明它在路由栈中啊,为了方便测试查找问题,我去掉了页面网络请求和传参,这时候我发现路由跳转竟然正常了,非常正常的返回了我想要pop 的页面,这让我很难受!

    于是我恢复了代码,去打断点追踪 popUntil执行流程

    我发现了RouteSettings 中路由名字发生了变化,它已经不单纯了,所以我们popUntil 为我们最初的路由名字已经失效了,所以我们显然可以使用如下方法

     Navigator.of(context).popUntil((route) => route.settings.name.startsWith(路由名字));
    

    这样我们就实现了我们的需求。

    下图是我 在 github 上做出的回答:

    由于项目依赖 fluro 比较重,迁移有稍许成本,打算继续先用,后期基于fluro 开源一个比较完美的路由框架。建议新开项目的伙伴们不要使用fluro,基于原生路由即可,做一些封装可以和比fluro更好用!

    相关文章

      网友评论

        本文标题:Flutter 中路由 使用 Fluro 解决Navigator

        本文链接:https://www.haomeiwen.com/subject/vhwzlktx.html