用途:在 Flutter 应用中实现导航与路由,覆盖移动端与 Web 端,包括选择导航方案、配置深度链接、管理页面间数据流以及处理浏览器历史。
方案选择:Navigator API(命令式)适合无深度链接需求的简单应用、单页到多页切换、基础导航栈和快速原型;go_router(声明式)适合需要深度链接(iOS、Android、Web)、支持浏览器历史、复杂导航模式、基于 URL 的导航以及可扩展的生产应用。资料明确不建议使用命名路由(Named Routes),原因是无法自定义深度链接行为、不支持浏览器前进按钮,且无论当前状态如何都会压入新路由。
主要能力:页面间传数据,Navigator 用 Navigator.push 配合 MaterialPageRoute 构造目标页面并传入参数,go_router 用 context.push('/details?id=123') 并通过 state.uri.queryParameters['id'] 取值;从页面返回数据用 await Navigator.push 获取结果,并检查 context.mounted。深度链接配置:Android 配置 AndroidManifest.xml 的 intent filters,iOS 配置 Info.plist 的 Universal Links,Web 在 go_router 下自动支持并需选择 URL 策略。Web URL 策略分 Hash(默认,example.com/#/path,无需服务器配置)与 Path(example.com/path,URL 更简洁但需服务器配置)。
导航方法:go_router 用 context.go 替换当前路由、context.push 入栈、context.pop 返回;Navigator 用 Navigator.push 入栈、Navigator.pop 出栈。
进阶主题:路由守卫(如鉴权重定向)、嵌套路由(共享 UI 的 shell 路由)、错误处理(404 与导航错误)、多 Navigator 管理独立导航栈。
限制与说明:资料未提供具体版本、性能数据或收费信息;示例代码位于 assets 目录,详细配置见 references 下的 deep-linking.md、web-navigation.md、go_router-guide.md 与 navigation-patterns.md。