Comment appeler correctement FirebaseFirestore.instance.clearPersistence () dans Flutter?
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
Vous devez l'appeler immédiatement après avoir initialisé Firebase et avant d'effectuer la première requête.
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.
ajoutez ceci à votre bouton de connexion 'onPressed':
FirebaseFirestore.instance.terminate();
FirebaseFirestore.instance
.clearPersistence()
.then((value) => signinUser(email, password, context));