Dart Flatter firestore setData如果没有可用的网络连接,则无错误

Dart Flatter firestore setData如果没有可用的网络连接,则无错误,dart,flutter,google-cloud-firestore,Dart,Flutter,Google Cloud Firestore,代码如下: createOrder(Order order) { loading.add(true); _auth.currentUser().asStream().asyncMap((FirebaseUser user) async { DocumentReference ref = firestore.collection('orders').document(); order = order.copyWith( uid: use

代码如下:

createOrder(Order order) {
    loading.add(true);
    _auth.currentUser().asStream().asyncMap((FirebaseUser user) async {
      DocumentReference ref = firestore.collection('orders').document();

      order = order.copyWith(
          uid: user.uid,
          createdAt: FieldValue.serverTimestamp(),
          updatedAt: FieldValue.serverTimestamp());

      return await ref.setData(order.toJson()).catchError((e){
        print('OrderBloc catchError: ${e.toString()}');
        loading.add(false);
        errors.add(ErrorHandler.handle(e));
      });
    }).listen((data) {
      loading.add(false);
      createOrderSubject.add(null);
    }).onError((e) {
      print('OrderBloc: ${e.toString()}');
      loading.add(false);
      errors.add(ErrorHandler.handle(e));
    });
  }
问题是,当设备上没有可用的internet连接时,它既不调用
catchError
也不调用
onError

因此,结果是加载旋转器始终保持旋转

我在日志中看到此错误:
I/OkHttpClientTransport(16453):javax.net.ssl.ssLexException:写入错误:ssl=0x7f6856b188:系统调用期间发生I/O错误,管道断开


那么为什么onError和catch错误不能被执行呢?如何修复?

只有当用户登录或登录失败时,
\u auth.currentUser()
才会获取一个值。如果没有网络连接,这两种情况都不是真的。您通常希望在调用
\u auth.currentUser()
之前检测到缺少网络连接,或者在代码中设置一个超时以放弃尝试。SSLexException呢,它没有被捕获,为什么?如果在建立安全连接时出现问题,则很可能发生在客户端。这通常会引发一个常规异常,而
onError
用于服务器上发生的错误。在这种情况下,是否有方法捕获客户端异常?
\u auth.currentUser()
仅在用户登录或登录失败时获取值。如果没有网络连接,这两种情况都不是真的。您通常希望在调用
\u auth.currentUser()
之前检测到缺少网络连接,或者在代码中设置一个超时以放弃尝试。SSLexException呢,它没有被捕获,为什么?如果在建立安全连接时出现问题,则很可能发生在客户端。这通常会引发常规异常,而
onError
用于服务器上发生的错误。在这种情况下,有没有方法捕获客户端异常??