Go Router

声明式基于 URL 的路由,使用 Flutter Router API,适用于页面导航、深链接、鉴权守卫、参数传递等场景。

安装

概览

GoRouter 是 Flutter 生态中一款基于 URL 的声明式路由解决方案,它充分利用 Flutter 新引入的 Router API,为开发者提供了一套直观、灵活且功能强大的页面导航框架。与传统路由库相比,GoRouter 的核心优势在于其完全声明式的配置方式,开发者只需通过简单的 GoRoute 对象列表即可定义整个应用的页面结构、参数传递规则和导航逻辑,极大提升了代码的可读性和可维护性。该库天然支持现代 Web 应用所需的特性,如浏览器历史记录管理、前进后退按钮响应、以及深链接(Deep Linking)处理,使得移动端与 Web 端的导航体验高度一致。无论是构建一个简单的单页面应用,还是一个包含复杂嵌套导航和多分支状态管理的复杂企业级应用,GoRouter 都能提供稳定可靠的支持,是当前 Flutter 项目中路由层的首选方案之一。

核心功能特点

  1. 声明式路由配置:使用 GoRoute 对象列表定义页面路径、参数和构建器,代码结构清晰易懂
  2. 完整的导航操作集:支持 go()、push()、replace()、pop() 等多种导航方法,满足各种页面跳转需求
  3. 灵活的参数传递机制:支持路径参数 (:id) 和查询参数 (q=value) 两种方式,便于动态内容展示
  4. 内置鉴权守卫与重定向:通过 redirect 回调函数实现登录状态检查、未授权访问拦截等安全控制
  5. ShellRoute 与 StatefulShellRoute:完美支持底部导航栏、侧边栏等需要保持部分 UI 一致性的复杂导航模式
  6. 自定义页面转场动画:允许开发者通过 pageBuilder 自定义 MaterialPage、CupertinoPage 或完全自定义的过渡效果

适用场景

GoRouter 特别适合那些需要复杂页面导航逻辑的现代 Flutter 应用。对于典型的移动应用,它可以轻松实现带有底部导航栏的主界面结构,每个标签页对应不同的路由分支,同时保持统一的顶部 AppBar 和底部 TabBar。在电商类应用中,GoRouter 能够优雅地处理商品详情页、购物车、订单列表等深层级页面的跳转,并支持从外部广告或分享链接直接跳转到特定商品页面的深链功能。对于需要严格权限控制的后台管理系统,GoRouter 的 redirect 机制可以确保用户未登录时自动跳转到登录页,登录成功后根据角色重定向到不同的管理面板。此外,当应用需要支持 Web 部署时,GoRouter 对浏览器历史记录的原生支持让 SPA(单页应用)的路由行为与原生应用无异,大大简化了跨平台开发的工作量。无论是初创项目的 MVP 阶段,还是大型企业的复杂产品线,GoRouter 都能提供一套成熟、高效且易于扩展的路由解决方案。