You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现Deep Linking跳转指定页面问题咨询

Flutter Firebase动态链接跳转启动页问题修复

问题说明

已在Flutter应用中配置Firebase动态链接,Android Manifest添加了Intent Filter,点击链接能唤起应用,但始终打开启动页,无法直接跳转到带参数的目标页面MenuDetailPage。

核心问题分析

当前代码仅处理了应用热启动/后台运行时的动态链接回调,未处理应用冷启动(完全关闭后从链接打开)的场景;同时导航操作可能在页面框架初始化完成前执行,导致导航失效。

修复方案

1. 补充冷启动动态链接处理

通过FirebaseDynamicLinks.instance.getInitialLink()获取应用冷启动时的动态链接,统一处理热启动和冷启动的导航逻辑。

2. 确保导航在页面框架初始化后执行

使用WidgetsBinding.instance.addPostFrameCallback延迟导航操作,保证MaterialApp已完成初始化,GetX导航上下文可用。

3. 统一导航逻辑封装

将参数解析和导航逻辑抽成独立方法,避免重复代码。

修改后的完整代码

初始化动态链接代码

Future<void> initDynamicLinks() async {
  // 处理冷启动场景的动态链接
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
  if (initialLink != null) {
    _handleDeepLink(initialLink.link);
  }

  // 处理热启动/后台唤醒场景的动态链接
  FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
    _handleDeepLink(dynamicLinkData.link);
  }).onError((error) {
    if (kDebugMode) {
      print(error.message);
    }
  });
}

// 统一处理深层链接导航
void _handleDeepLink(Uri deepLink) {
  String name = deepLink.queryParameters['name'] ?? 'Default Name';
  String product = deepLink.queryParameters['product'] ?? 'Default Product';

  // 延迟导航,确保页面框架初始化完成
  WidgetsBinding.instance.addPostFrameCallback((_) {
    Get.to(() => MenuDetailPage(name: name, product: product));
  });
}

分享按钮代码(无需修改,仅确认参数编码)

IconButton(
  onPressed: () {
    String firebaseUrl = 'https://dummydata.page.link/menudetail';
    String sharedUrl = '$firebaseUrl?name=${Uri.encodeComponent(widget.name)}&product=${Uri.encodeComponent(widget.product)}';
    Share.share(sharedUrl);
  },
  icon: Icon(Icons.share, color: kwhite, size: 30.r,),
)

额外检查项

  • 确认Firebase控制台中动态链接的深层链接配置与代码中解析的路径一致
  • 验证Android Manifest的Intent Filter中android:host和android:pathPattern与动态链接的域名、路径匹配
  • 测试冷启动和热启动两种场景下的跳转效果

内容的提问来源于stack exchange,提问作者Aashi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:22:32