Come chiamare correttamente FirebaseFirestore.instance.clearPersistence () in Flutter?
Sto affrontando lo stesso problema di questa domanda del ragazzo
Ma la sua risposta accettata non mi ha aiutato.
Il problema:
Quando un utente si disconnette e un altro utente diverso accede, tutti i dati mostrati sulla mia app provengono dal precedente utente disconnesso a causa del sistema di memorizzazione nella cache Firebase. Ho cercato su questo problema e ho trovato una soluzione che consiste nel chiamare questo metodo:
FirebaseFirestore.instance.clearPersistence();
Ma ogni volta e ovunque inserisco questa riga di codice, genera un'eccezione che dice che non posso chiamare questo metodo quando il client è in esecuzione:
Si è verificata un'eccezione. PlatformException (PlatformException (failed-precondition, Operation wasused because the system non is in a state required for the operation's execution. Se esegui una query, assicurati che sia stata indicizzata tramite la console Firebase., {Code: failed-precondition, message: L'operazione è stata rifiutata perché il sistema non è in uno stato richiesto per l'esecuzione dell'operazione. Se si esegue una query, assicurarsi che sia stata indicizzata tramite la console Firebase., NativeErrorMessage: la persistenza non può essere cancellata mentre il client è in esecuzione., NativeErrorCode: 9} ))
quindi, come chiamare questo metodo? o meglio, c'è un modo migliore per risolvere questo problema?
Risposte
Dovresti chiamarlo immediatamente dopo aver inizializzato Firebase e prima di effettuare la prima query.
Sembra sia necessario terminare il FirebaseFirestore.instanceprimo.
Alla fine del mio metodo di disconnessione chiamo:
await FirebaseFirestore.instance.terminate();
await FirebaseFirestore.instance.clearPersistance();
Non ricevo errori e tutto sembra funzionare come dovrebbe ora.
aggiungilo al tuo pulsante di accesso "onPressed":
FirebaseFirestore.instance.terminate();
FirebaseFirestore.instance
.clearPersistence()
.then((value) => signinUser(email, password, context));