深度链接
深度链接不仅可以打开应用程序,还可以将用户带到应用程序内部的特定位置。例如,一双运动鞋广告的深度链接可能会打开一个购物应用程序并显示该特定鞋子的产品页面。
Flutter 支持 iOS、Android 和 Web 上的深度链接。打开 URL 会在您的应用中显示该屏幕。通过以下步骤,您可以使用命名路由(使用 routes
参数或 onGenerateRoute
),或者使用 Router
小部件来启动和显示路由。
如果您在 Web 浏览器中运行应用程序,则无需额外设置。路由路径的处理方式与 iOS 或 Android 深度链接相同。默认情况下,Web 应用使用模式 /#/path/to/app/screen
从 url 片段读取深度链接路径,但这可以通过配置 URL 策略 来更改。
如果您是视觉学习者,请查看以下视频:
开始
#要开始,请参阅我们针对 Android 和 iOS 的 cookbook:
从基于插件的深度链接迁移
#如果您已编写插件来处理深度链接,如深度链接和 Flutter 应用程序(Medium 上的一篇免费文章)中所述,您应该选择退出 Flutter 的默认深度链接处理程序。为此,请在 Info.plist
中将 FlutterDeepLinkingEnabled
设置为 false, 或 在 AndroidManifest.xml
中将 flutter_deeplinking_enabled
设置为 false。
行为
#行为因平台和应用程序是否已启动和运行而略有不同。
平台/场景 | 使用 Navigator | 使用 Router |
---|---|---|
iOS(未启动) | 应用获取 initialRoute(“/”)并在短时间后获取 pushRoute | 应用获取 initialRoute(“/”)并在短时间后使用 RouteInformationParser 解析路由并调用 RouterDelegate.setNewRoutePath,这会使用相应的 Page 配置 Navigator。 |
Android - (未启动) | 应用获取包含路由的 initialRoute(“/deeplink”) | 应用获取 initialRoute(“/deeplink”)并将其传递给 RouteInformationParser 以解析路由并调用 RouterDelegate.setNewRoutePath,这会使用相应的 Page 配置 Navigator。 |
iOS(已启动) | 调用 pushRoute | 解析路径,并使用一组新的 Page 配置 Navigator。 |
Android(已启动) | 调用 pushRoute | 解析路径,并使用一组新的 Page 配置 Navigator。 |
当使用 Router
小部件时,您的应用程序能够在应用程序运行时打开新的深度链接时替换当前的页面集。
了解更多
#- 学习 Flutter 的新导航和路由系统 提供了对 Router 系统的介绍。
- Google I/O 2023 的深入探讨 Flutter 深度链接 视频
- Flutter 深度链接:终极指南,一个逐步教程,展示如何在 Flutter 中实现深度链接。
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。