具有导航原因无限循环的Firebase动态链接

时间:2020-08-11 03:05:50

标签: firebase flutter dart firebase-dynamic-links

我从Firebase控制台创建了一个firebase动态链接。我尝试将其实现为代码,当我通过使用Navigation方法单击 example.page.link/ABCD 来冷启动我的应用程序时,会导致无限循环。如果应用程序在后台运行,则没有任何问题。

问题: 当应用从冷启动开始导航到新页面时,无限循环会触发。

有什么办法解决这个问题吗?

已编辑

示例链接:www.example.com/testing?title=testing_deep_link

  Future firebaseDynamicLinkInit() async {
    final PendingDynamicLinkData data =
        await FirebaseDynamicLinks.instance.getInitialLink();
    _handleDeepLink(data);

    FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData dynamicLinkData) async {
      _handleDeepLink(dynamicLinkData);
    }, onError: (OnLinkErrorException e) async {
      print('${e.message}');
    });
  }
  void _handleDeepLink(PendingDynamicLinkData data) {
    final Uri deepLink = data?.link;
    if (deepLink != null) {
      var title = deepLink.queryParameters['title'];

      if (title != null) {
        // START This part trigger the problem
        Navigator.of(context).popUntil((route) => route.isFirst);
        Navigator.of(context).pushReplacementNamed('/Pages', arguments: 6);
        // END This part trigger the problem
      }
    }

    return null;
  }

1 个答案:

答案 0 :(得分:1)

关闭线程

为我的粗心表示歉意。

我发现了我犯的错误。我不应该使用导航推送,因为此路由“ / Pages”将重新创建页面并一次又一次地运行 firebaseDynamicLinkInit()(无限循环)。

路由'/ Pages' initState()包含 firebaseDynamicLinkInit()会导致无限循环。

 // START This part trigger the problem
 Navigator.of(context).popUntil((route) => route.isFirst);
 Navigator.of(context).pushReplacementNamed('/Pages', arguments: 6);
 // END This part trigger the problem