2 votes

Firebase Dynamic Link avec navigation cause boucle infinie

J'ai créé un lien dynamique Firebase à partir de la console Firebase. J'ai essayé de l'implémenter dans mon code et quand je démarre mon application à froid en cliquant sur le lien dynamique de Firebase. exemple.page.link/ABCD avec la méthode de navigation, cela provoque une boucle infinie. Si l'application est en arrière-plan, il n'y a pas de problème.

Problème : La boucle d'infini se déclenche lorsque l'application commence à froid et navigue vers une nouvelle page.

Comment résoudre ce problème ?

Modifié

Exemple de lien : 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;
  }

1voto

YeN Points 629

L'ENJEU EST FERMÉ

Je m'excuse pour ma négligence.

J'ai trouvé l'erreur que j'avais faite. Je ne devrais pas utiliser navigate push parce que cette route '/Pages' va recréer la page et exécuter la commande firebaseDynamicLinkInit() encore et encore (boucle infinie).

La route '/Pages'. initState() inclure firebaseDynamicLinkInit() provoque une boucle infinie.

 // 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X