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