【问题标题】:How to catch Client is Offline error in Flutter Firebase Firestore如何在 Flutter Firebase Firestore 中捕获 Client is Offline 错误
【发布时间】:2020-12-04 11:00:18
【问题描述】:

我一直在使用 Firestore,并且成功实施了它。但是,当我离线测试它时,旨在实现一个相应的 UI 显示当时无法访问服务器或任何东西,我不断收到 客户端离线 错误,并且由于某种原因,我没办法抓住它。

这是错误信息:

Exception has occurred.
PlatformException (PlatformException(Error performing get, Failed to get document because the client is offline., null))

这也是我的示例代码:

DocumentReference ref = firestoreDb.collection('collection').document('doc1');

try{
    ref.get().then((DocumentSnapshot ds){
        if(ds.exists == true){
            print('ds exists');
        }else{
            print('ds does not exist);
        }
    }).catchError((err){
        print(err);
    });
} on PlatformException catch (err){
    print(err);
} catch (err){
    print(err);
}

我们绕过了示例代码中的任何错误捕获,并且实际上并未捕获到错误。我需要至少捕获 client is offline 异常,以便正确更新我的 UI。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    对于所有 Firestore 客户端 SDK(包括 Flutter),客户端离线时永远不会引发错误。如果您在日志中看到错误,这并不意味着异常正在从 API 调用中转义。 Tt 只是意味着 SDK 已选择在内部记录某些内容。在其他平台上,SDK 也会在内部重试查询,直到客户端重新上线,所以我认为 Flutter 也是如此。

    很遗憾,如果您处于离线状态,Firestore 也会 does not provideway for you to detect

    另见:how to catch error in firestore when no internet

    如果你认为 Flutter SDK 做错了,我鼓励你file a bug on GitHub

    【讨论】:

    • 感谢您的快速回复,这有助于我更快地寻找另一种方式,而不是停留更长时间。在我的测试过程中,它会在调试模式下阻止我的代码,并且在发布模式下将消息简单地写入终端。我想我只需要在达到那个点之前测试连接性。也感谢您提供的链接,很抱歉我无法在最初的研究中尽快找到它们。
    • 我不知道是不是只有我一个人,但我希望很快会有一些东西可以用来直接从 Firestore 对象本身解决客户端的离线状态——也许是一些便利功能。但就目前而言,总会有另一种方式。
    • 您可以随时提交功能请求,但我认为不会有任何改变。多年来一直是这样的要求。该文档提出了其他管理存在的方法。 firebase.google.com/docs/firestore/solutions/presence
    猜你喜欢
    • 2019-12-17
    • 2021-03-15
    • 2020-11-27
    • 2020-12-08
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2020-11-05
    相关资源
    最近更新 更多