繁体   English   中英

如何使用 Flutter Firebase 动态链接与 go_router

[英]How to use Flutter Firebase dynamic links with go_router

我在我的应用程序中集成了firebase dynamic links并且工作正常,后来我改为使用go_router ,现在我不知道我应该怎么做才能让它工作或如何处理它。

我想象的方式是 FB 动态链接path将与GoRouter routes中页面的path相同,并且 go_router 将自动redirect到页面但我不认为它是这样工作的,我可以找不到任何资源。

所以问题是如何将Firebase DynamicLinksgo_router一起使用?

我就是这样做的,看起来工作正常:)

  • 当应用程序处于终止模式时:

    未来的 main() 异步 {...

     // Closed state: getInitialLink is Used final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

    ...

然后通过 runApp(MtApp(initialRoute: initialLink)) 将其传递给 GoRouter.initialLocation 字段或 GoRouter.redirect function,具体取决于您如何使用它。

  • 当应用程序处于后台时:

用您创建的 statefulWidget 包装您的顶部小部件,例如:

class AHDynamicLinksManager 扩展

 StatefulWidget {
  final Widget child;
  const AHDynamicLinksManager({required this.child, Key? key})
      : super(key: key);

  @override
  State<AHDynamicLinksManager> createState() => _AHDynamicLinksManagerState();
}



class _AHDynamicLinksManagerState extends State<AHDynamicLinksManager> {

  @override
  void initState() {
    super.initState();
    FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
      String goingTo = dynamicLinkData.link.path;
      GoRouter.of(context).go(goingTo);
    }).onError((error) {
      GoRouter.of(context).go("/errorpage/$error");
    });
  }

  @override
  Widget build(BuildContext context) {
    return widget.child;
  }
}

希望它有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM