Flutter 局部路由实现详解
Flutter是借鉴React的开发思想实现的,在子组件的插槽上,React有this.props.children,Vue有<slot></slot>。
当然Flutter也有类似的Widget,那就是Navigator,不过是以router的形式实现(像<router-view></router-view>???)。
Navigator的使用无非3个属性
- initialRoute: 初始路由
- onGenerateRoute: 匹配路由
- onUnknownRoute: 404
在实现层面
首先:Navigator的高度为infinity。如果直接父级非最上级也是infinity会产生异常,例如,Scaffold -> Column -> Navigator。所以:Navigator需要附件限制高度,例如:Scaffold -> Column -> Container(height: 300) -> Navigator
然后:在onGenerateRoute属性中,使用第一个BuildContext参数,能够在MaterialApp未设置route的情况下使用Navigator.pushNamed(nContext, '/efg');跳到对应的子路由中。
最后:Navigator执行寻找路由顺序是 initialRoute -> onGenerateRoute -> onUnknownRoute,这个和React的Route是类似的。
最后附上源码
项目地址: https://github.com/zhongmeizhi/fultter-example-app
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。