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

Flutter集成firebase_dynamic_links时onLink调用报错求助

解决firebase_dynamic_links中onLink调用报错的问题

你遇到的问题确实是因为firebase_dynamic_links包的API更新导致的。在新版本(比如4.0.0及以上)中,onLink不再是一个可直接调用的方法,而是一个**Stream<PendingDynamicLinkData?>**类型的对象,所以直接加括号传参数会报「不是函数无法调用」的错误。

修正后的代码写法应该是通过listen方法监听这个流来处理动态链接:

final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
_handleDeepLinks(data);

// 监听后续的动态链接
FirebaseDynamicLinks.instance.onLink.listen(
  (PendingDynamicLinkData dynamicLinkData) {
    _handleDeepLinks(dynamicLinkData);
  },
  onError: (e) {
    print('This is error $e');
  },
);

另外注意你原来代码里的onSucess拼写错误,正确的是onSuccess,不过在新版写法里已经不需要这个参数名了,直接在listen的第一个参数处理成功回调,第二个参数处理错误即可。

如果需要在页面销毁时取消监听,可以保留listen返回的StreamSubscription对象,在合适时机调用cancel():

StreamSubscription? _linkSubscription;

@override
void initState() {
  super.initState();
  _initDynamicLinks();
}

void _initDynamicLinks() async {
  final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
  _handleDeepLinks(data);

  _linkSubscription = FirebaseDynamicLinks.instance.onLink.listen(
    (dynamicLinkData) {
      _handleDeepLinks(dynamicLinkData);
    },
    onError: (e) {
      print('This is error $e');
    },
  );
}

@override
void dispose() {
  _linkSubscription?.cancel();
  super.dispose();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:50:38