Como chamar corretamente FirebaseFirestore.instance.clearPersistence () no Flutter?
Estou enfrentando o mesmo problema que esse cara pergunta
Mas sua resposta aceita não me ajudou.
O problema:
Quando um usuário sai e outro usuário diferente entra, todos os dados mostrados no meu aplicativo são do usuário desconectado anteriormente devido ao sistema de cache firebase. Pesquisei sobre esse problema e encontrei uma solução que consiste em chamar este método:
FirebaseFirestore.instance.clearPersistence();
Mas sempre e em todos os lugares que coloco esta linha de código, lança uma exceção dizendo que não posso chamar este método quando o cliente está em execução:
Ocorreu uma excepção. PlatformException (PlatformException (falhou-pré-condição, a operação foi rejeitada porque o sistema não está em um estado necessário para a execução da operação. Se realizar uma consulta, certifique-se de que ela foi indexada por meio do console do Firebase., {Código: falhou-pré-condição, mensagem: A operação foi rejeitada porque o sistema não está em um estado necessário para a execução da operação. Se realizar uma consulta, verifique se ela foi indexada por meio do Firebase console., NativeErrorMessage: A persistência não pode ser apagada enquanto o cliente está em execução., NativeErrorCode: 9} ))
então, como chamar esse método? ou melhor, existe a melhor maneira de resolver esse problema?
Respostas
Você deve chamá-lo imediatamente após inicializar o Firebase e antes de fazer a primeira consulta.
Parece que é necessário encerrar o FirebaseFirestore.instanceprimeiro.
No final do meu método de logoff, chamo:
await FirebaseFirestore.instance.terminate();
await FirebaseFirestore.instance.clearPersistance();
Não recebo erros e tudo parece estar funcionando como deveria agora.
adicione isso ao seu botão de login 'onPressed':
FirebaseFirestore.instance.terminate();
FirebaseFirestore.instance
.clearPersistence()
.then((value) => signinUser(email, password, context));