深度链接

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小部件时,你的应用可以在应用运行时打开新的深度链接时替换当前页面集。

如需了解更多信息