【问题标题】:How to properly call FirebaseFirestore.instance.clearPersistence() in Flutter?如何在 Flutter 中正确调用 FirebaseFirestore.instance.clearPersistence()?
【发布时间】:2021-01-03 22:17:53
【问题描述】:

我和这个人question面临同样的问题

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

问题:

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

FirebaseFirestore.instance.clearPersistence();

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

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

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

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    看来有必要先终止FirebaseFirestore.instance

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

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

    我没有抛出任何错误,而且一切似乎都在正常运行。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我尝试了这种方法,但没有奏效。我注销并等待 FirebaseFirestore.instance.clearPersistence();单击登录按钮后的第一件事,我得到了同样的错误。
      • 您找到解决此问题的方法了吗?
      • 看来有必要先终止FirebaseFirestore.instance。
      【解决方案3】:

      将此添加到您的登录按钮“onPressed”:

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

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 2020-06-03
        • 2021-04-04
        • 2020-12-28
        • 2019-08-23
        • 2019-05-24
        • 1970-01-01
        • 2020-10-01
        • 2020-04-25
        相关资源
        最近更新 更多