Comment appeler correctement FirebaseFirestore.instance.clearPersistence () dans Flutter?

Sep 16 2020

Je suis confronté au même problème que cette question de type

Mais sa réponse acceptée ne m'a pas aidé.

Le problème:

Lorsqu'un utilisateur se déconnecte et qu'un autre utilisateur différent se connecte, toutes les données affichées sur mon application proviennent de l'utilisateur déconnecté précédent en raison du système de mise en cache de Firebase. J'ai cherché ce problème et j'ai trouvé une solution qui consiste à appeler cette méthode:

FirebaseFirestore.instance.clearPersistence();

Mais à chaque fois et partout où je place cette ligne de code, lance une exception disant que je ne peux pas appeler cette méthode lorsque le client est en cours d'exécution:

Une exception s'est produite. PlatformException (PlatformException (failed-precondition, Operation a été rejetée car le système n'est pas dans un état requis pour l'exécution de l'opération. Si vous exécutez une requête, assurez-vous qu'elle a été indexée via la console Firebase., {Code: failed-precondition, message: L'opération a été rejetée car le système n'est pas dans un état requis pour l'exécution de l'opération. Si vous exécutez une requête, assurez-vous qu'elle a été indexée via la console Firebase., NativeErrorMessage: La persistance ne peut pas être effacée pendant l'exécution du client., NativeErrorCode: 9} ))

alors, comment appeler cette méthode? ou mieux, existe-t-il une meilleure façon de résoudre ce problème?

Réponses

3 DougStevenson Sep 17 2020 at 03:54

Vous devez l'appeler immédiatement après avoir initialisé Firebase et avant d'effectuer la première requête.

Dpedrinha Oct 15 2020 at 21:38

Il semble qu'il soit nécessaire de terminer le FirebaseFirestore.instancepremier.

À la fin de ma méthode de déconnexion, j'appelle:

await FirebaseFirestore.instance.terminate();
await FirebaseFirestore.instance.clearPersistance();

Je ne reçois aucune erreur et tout semble fonctionner comme il se doit maintenant.

MuhammadShafique Jan 05 2021 at 07:41

ajoutez ceci à votre bouton de connexion 'onPressed':

FirebaseFirestore.instance.terminate();
                FirebaseFirestore.instance
                    .clearPersistence()
                    .then((value) => signinUser(email, password, context));