深度链接
Flutter 支持 iOS、Android 和 Web 浏览器上的深度链接。打开一个 URL 会在你的应用中显示该屏幕。通过以下步骤,你可以使用命名路由(通过 routes
参数或 onGenerateRoute
)或使用 Router
小部件启动并显示路由。
如果你在 Web 浏览器中运行应用,则无需进行其他设置。路由路径的处理方式与 iOS 或 Android 深度链接相同。默认情况下,Web 应用使用以下模式从 URL 片段中读取深度链接路径:/#/path/to/app/screen
,但可以通过 配置应用的 URL 策略 来更改此模式。
如果你是一个视觉学习者,请查看以下视频
Flutter 中的深度链接
开始
要开始,请参阅我们的 Android 和 iOS 食谱
从基于插件的深度链接迁移
如果你已编写了一个插件来处理深度链接,如 深度链接和 Flutter 应用(Medium 上的一篇免费文章)中所述,它将继续工作,直到你选择加入此行为,方法是将 FlutterDeepLinkingEnabled
添加到 Info.plist
或将 flutter_deeplinking_enabled
添加到 AndroidManifest.xml
。
行为
行为会根据平台以及应用是已启动还是正在运行而略有不同。
平台/场景 | 使用 Navigator | 使用 Router |
---|---|---|
iOS(未启动) | 应用获取 initialRoute(“/”),并在短时间后获取 pushRoute | 应用获取 initialRoute(“/”),并在短时间后使用 RouteInformationParser 解析路由并调用 RouterDelegate.setNewRoutePath,后者使用相应页面配置 Navigator。 |
Android -(未启动) | 应用获取包含路由(“/deeplink”)的 initialRoute | 应用获取 initialRoute(“/deeplink”)并将其传递给 RouteInformationParser,以解析路由并调用 RouterDelegate.setNewRoutePath,后者使用相应页面配置 Navigator。 |
iOS(已启动) | 调用 pushRoute | 解析路径,并使用一组新页面配置 Navigator。 |
Android(已启动) | 调用 pushRoute | 解析路径,并使用一组新页面配置 Navigator。 |
当使用Router
小部件时,你的应用可以在应用运行时打开新的深度链接时替换当前页面集。
如需了解更多信息
- 了解 Flutter 的新导航和路由系统提供了 Router 系统的简介。
- 深入了解 Flutter 深度链接,来自 Google I/O 2023 的视频