定义:

路由管理管理是构建多页面应用的核心,它通过Navigator和Route来管理页面栈,实现页面跳转和返回

路由管理 - 基本路由
  • 场景:基本路由适合页面不多,跳转逻辑简单的场景
  • 用法:无需提前注册路由,跳转时创建MaterialPageRoute实例即可

  • 跳转新页面:Navigator.push(BuildContext context, Route route)
  • 返回上一页:Navigator.pop(BuildContext context)
  • 注意:MaterialApp是路由系统组件,只能有一个MaterialApp包裹
路由管理 - 命名路由

场景:应用页面增多后,使用命名路由提升代码可维护性

用法:需要先在MaterialApp中注册一个路由表(routes)并设置initialRoute(首页)

路由管理 - 跳转方法:

路由管理 - 传递参数

作用:通过路由传递参数时实现页面间数据通信的常用方式

传递参数(命名路由):Navigator.pushNamed(context,地址,arguments:{参数})

接收参数(命名路由):ModalRoute.of(context)?.settings.arguments

接收时机:initState获取不到路由参数,放置在Future.microtask(异步微任务)中

路由管理 - 传递参数 - 基础路由

传递参数(基础路由):通过组件构造函数传递参数 - (父传子)

接收参数(基础路由):通过组件构造函数接收参数 - (父传子)

接收时机:initState可获取到基础路由的构造函数传参

路由管理 - 动态路由与高级控制

场景:更复杂的场景,如需要根据参数动态生成页面,或实现路由拦截,可以使用onGenertaeRoute和onUnkonwRoute

  • onGenerateRoute:允许RouteSettings(包含路由名称和参数)动态创建不同的Route
  • onUnkonwRoute:跳转一个未在路由表中注册,也未在onGenertaeRoute中处理的路由,会调用此回调。通常显示”“404”页面
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐