flutter firestore setData如果没有网络连接可用,则没有错误

时间:2019-05-15 10:44:31

标签: 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: 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));
    });
  }

问题在于,当设备上没有互联网连接时,它既不会调用catchError也不会调用onError

因此,结果是加载微调器永远保持旋转状态。

我在日志中看到此错误: I/OkHttpClientTransport(16453): javax.net.ssl.SSLException: Write error: ssl=0x7f6856b188: I/O error during system call, Broken pipe

那么为什么不执行onError和catch错误?如何解决?

0 个答案:

没有答案