App关闭/杀死时Firebase Dynamic Link无法跳转指定页面求助
解决Firebase动态链接冷启动跳转失效问题
你的代码只处理了App处于运行状态(前台/后台)时的动态链接跳转,但**冷启动场景(App被杀死后点击链接启动)**需要主动获取初始链接并处理,这就是问题所在。
修改initDynamicLinks方法,添加冷启动链接的处理逻辑:
import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:firebase_dynamic_links/firebase_dynamic_links.dart'; import 'dart:developer' as developer; Future<void> initDynamicLinks() async { // 处理冷启动场景的初始链接 final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink(); if (initialLink != null) { handleDynamicLink(initialLink); } // 处理App运行时的链接跳转(热启动/后台唤醒) FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) { handleDynamicLink(dynamicLinkData); }).onError((error) { developer.log(error.message.toString()); }); } // 统一处理动态链接跳转逻辑,避免重复代码 void handleDynamicLink(PendingDynamicLinkData dynamicLinkData) { final String linkStr = dynamicLinkData.link.toString(); final String id = linkStr.substring(linkStr.lastIndexOf('/') + 1); // 延迟执行跳转,确保路由环境已初始化 WidgetsBinding.instance.addPostFrameCallback((_) { Get.to(() => Page(id: id)); }); } @override void initState() { initDynamicLinks(); super.initState(); }
关键说明:
getInitialLink():专门用于获取App冷启动时携带的动态链接,返回非空值说明是通过点击动态链接启动的App- 统一跳转逻辑:把解析链接和跳转的代码抽成
handleDynamicLink方法,减少重复代码 addPostFrameCallback:确保在Widget树构建完成后再执行路由跳转,避免GetX路由未初始化导致的跳转失败
内容的提问来源于stack exchange,提问作者peakystewie
相关产品推荐
相关产品推荐

