如何在 Flutter 中正确调用 FirebaseFirestore.instance.clearPersistence()?

Thi*_*cke 8 firebase flutter google-cloud-firestore

我面临着和这个家伙的问题一样的问题

但他接受的答案对我没有帮助。

问题:

当一个用户退出时,另一个不同的用户登录时,由于 Firebase 缓存系统,我的应用程序上显示的所有数据都来自前一个退出用户。我搜索了这个问题并找到了一个解决方案,它包括调用这个方法:

FirebaseFirestore.instance.clearPersistence();
Run Code Online (Sandbox Code Playgroud)

但是无论何时何地,我放置这行代码时,都会抛出一个异常,说在客户端运行时我无法调用此方法:

发生异常。PlatformException (PlatformException(failed-precondition, 操作被拒绝,因为系统未处于操作执行所需的状态。如果执行查询,请确保已通过 Firebase 控制台对其进行索引。, {code: failed-precondition, message:操作被拒绝,因为系统未处于操作执行所需的状态。如果执行查询,请确保已通过 Firebase 控制台对其进行索引。nativeErrorMessage: 客户端运行时无法清除持久性。nativeErrorCode: 9} ))

那么,如何调用这个方法呢?或者更好,有没有最好的方法来解决这个问题?

Dpe*_*nha 6

似乎有必要终止第FirebaseFirestore.instance一个。

在我的注销方法结束时,我调用:

await FirebaseFirestore.instance.terminate();
await FirebaseFirestore.instance.clearPersistence();
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误,一切似乎都在正常工作。


Dou*_*son 1

您应该在初始化 Firebase 之后、进行第一个查询之前立即调用它。