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
相关产品推荐
相关产品推荐

