flutter firestore setData без ошибок, если нет доступного сетевого подключения - PullRequest
0 голосов
/ 15 мая 2019

Вот код:

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 не выполняются? Как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...