Flutter中如何向深层链接发送参数?

问题描述 投票:0回答:2

我已经成功地在 Flutter 上为我的应用程序设置了深层链接(目前仅在 Android 上),这里是 AndroidManifest.xml 文件中用于设置深层链接的意图过滤器(使用示例主机名和前缀) :

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" android:host="example.com" android:pathPrefix="/prefix"/>
</intent-filter>

这有效,每当我在手机上访问http://example.com/prefix时,它都会建议打开我的应用程序。

现在,我希望能够向深层链接传递参数,也许是像 http://example.com/prefix?code=abc123 这样的 URL 参数。所以我可以从我的 Flutter 应用程序中读取它,例如

getParam('code')
返回
abc123

这可能吗?

android flutter deep-linking
2个回答
1
投票

如果您需要特定域名的更先进的深层链接体验,Google firebase 有一个很棒的产品,名为动态链接,而且是免费的。

Flutter 有一个官方包可以用作 firebase_dynamic_links

动态链接消除了 DeepLink 的弱点。使用动态链接,您可以以类似的方式处理所有平台(例如 Android、iOS 和 Web)。它将用户从您的移动网站无缝转移到您应用程序中的等效内容(如果用户尚未在她/他的设备上安装您的应用程序,则内容将在应用程序安装后显示)。此外,您可以在 Firebase 控制台中查看动态链接的日志。另一个功能是找出用户点击链接的位置。更多信息


0
投票

使用 go router 满足您的深度链接需求。它可以处理两种场景。

您可以使用“:”前缀将任何段标记为参数。在 GoRoute 中定义如下:

GoRoute(
  path: '/search/:keyword',
  builder: (context, state) => const UserScreen(id:state.pathParameters['keyword']),
),

如果你使用经典参数而不是段,在url末尾放置?query=keyword,你可以像这样定义GoRoute:

GoRoute(
  path: '/search',
  builder: (context, state) => const UsersScreen(filter: state.uri.queryParameters['keyword']),
),
© www.soinside.com 2019 - 2024. All rights reserved.