用途:在 Flutter 项目中实现声明式路由与深度链接,适用于需要基于 URL 导航的 Web 应用或移动应用。
主要能力:使用 go_router 包构建路由树,核心对象包括 GoRouter(路由配置)、GoRoute(URL 到页面的映射)、ShellRoute/StatefulShellRoute(持久化 UI 外壳,如底部导航栏,并保持各分支状态)。支持通过 usePathUrlStrategy() 去除 Web URL 中的 # 片段,便于跨平台深度链接。
使用方式:先执行 flutter create <app-name>、cd <app-name>、flutter pub add go_router 创建项目并添加依赖;在 main 中调用 usePathUrlStrategy(),定义 GoRouter 实例并通过 MaterialApp.router 的 routerConfig 绑定。可用 redirect 处理鉴权或状态路由,errorBuilder 处理错误页。导航使用 context.go()(替换栈)、context.push()(压栈)、context.goNamed()(命名路由带路径参数)、context.pop()。嵌套导航使用 StatefulShellRoute.indexedStack 配合 StatefulShellBranch 和 StatefulNavigationShell 实现分支切换。
平台深度链接:Android 需在 AndroidManifest.xml 的 MainActivity 添加 intent-filter,并在域名下托管 .well-known/assetlinks.json;iOS 需在 Info.plist 设置 FlutterDeepLinkingEnabled,在 Runner.entitlements 添加关联域名,并托管 apple-app-site-association 文件。可用 adb 或 xcrun simctl openurl 验证。
限制:资料未提供具体版本要求、性能数据或收费信息;若使用第三方深度链接插件(如 app_links),需将 FlutterDeepLinkingEnabled 设为 NO 以避免冲突。