Flutter学习-导航和路由

参考文章
作者:周糖果
链接:https://juejin.cn/post/7039498259965935630
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

什么是路由

APP由多个页面组成,我们要跳转到不同的页面,如何跳转呢?类似浏览器,通过唯一的标识找到要跳转的页面,把标识放到一个路由映射表,然后进行跳转即可。

Route

一个页面要想被路由统一管理,必须包装为一个 Route。MaterialPageRoute是PageRoute的子类,表示一个模态路由页面,还定义了路由构建及切换时过渡动画的相关接口及属性。MaterialPageRoute 是 Material 组件库提供的组件,它可以针对不同平台,实现与平台页面切换动画风格一致的路由切换动画。

在 iOS 平台,打开一个页面会从右边滑动到屏幕左边,返回时会从左边到右边消失
在 Android 平台,打开一个页面会从屏幕底部滑动到屏幕的顶部,关闭页面时从顶部滑动到底部消失

继承关系是这样的
MaterialPageRoute->PageRoute->ModalRoute->TransitionRoute->OverlayRoute->Route

Navigator

Navigator:管理所有的 Route 的 Widget,通过栈来进行管理的,通常当前屏幕显示的页面就是栈顶的路由。
组件路由
路由跳转,传入一个路由对象route。该方法是把新的路由添加到Navigator管理的路由对象的栈顶
Navigator.of(context).push(route)
返回上个页面,这里返回时可以带参数的[ T? result ],退出则是从栈顶把路由对象移出
Navigator.of(context).pop()

示例代码

child: ElevatedButton(
onPressed: (){
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context){
return PageDetail(); // 这个就是页面对应的组件组件对象
}));
},
child: Text(‘进入详情页面’),
)

Flutter 有一个命令式路由机制的 Navigator 小部件,和一个更为惯用的声明式路由机制(类似于与小部件一起使用的构建方法) Router 小部件。

通常情况下,通过使用 Navigator API (通过哑铃应用程序构造函数的哑铃应用程序路由属性)可以很好地为小型应用程序提供服务。

更复杂的应用程序通常由RouterAPI 提供更好的服务,路由器构造函数是 MaterialApp.router 。这需要一些前期工作来描述如何解析应用程序的深度链接,以及如何将应用程序状态映射到活动页面,但是从长远来看,这些工作更具表现力。

猜你喜欢

转载自blog.csdn.net/hn_lgc/article/details/126377381
今日推荐