Я создаю приложение для флаттера и использую Bloc. Я добавляю sink.addError('some error text')
в мойку потока.
В блоке я добавил слушателя в поток, который имеет такие функции, как onDone
, onError
и data
. Теперь, что происходит, все, что я добавляю в сток, даже sink.addError
классифицируется как данные, а не как ошибка. Я хочу выяснить, как дифференцировать данные, добавленные в сток, и ошибки, добавленные в сток .addError.
Изначально я думал, что onError(error){}
, мне не звонят sink.addError('some error text')
также считается данными в потоке. Если это так, то мне нужен способ различать данные и данные об ошибках. Вот некоторый код, чтобы помочь вам понять суть моего вопроса:
class Bloc extends Object with Validators {
final _controller;
final DataBloc dataBloc;
BlocTextField({ this.dataBloc}) : _controller = initMethod(dataBloc);
//TODO: Issue with Stream.listen where onError is never called
static BehaviorSubject<dynamic> initMethod(DataBloc dataBloc) {
final _controller = new BehaviorSubject<dynamic>();
_controller.stream.listen((data) {
print("Data in "+ data);
}, onError: (error) {
print("Error in "+ error);
});
return _controller;
}
//To change data to our Stream using Sink.
Function(dynamic) get changeField=> _controller.sink.add;
//To add field data from Stream.
textFieldStream => _controller.stream.transform(validateField());
dispose() {
_textFieldController.close();
}
}
Теперь, когда я пытаюсь добавить данные в этот поток. Вот мой валидатор
class Validators {
validateField() {
return StreamTransformer<dynamic, dynamic>.fromHandlers(
handleData: (FieldStream, sink) {
sink.addError("Some error here");
});
}
}
Вывод на консоль: Data in some error here
.
Вот результаты моего флаттера:
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.13.6 17G3025, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.0)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
[✓] Android Studio (version 3.2)
[✓] VS Code (version 1.27.2)
[✓] Connected devices (1 available)
• No issues found!
Пожалуйста, дайте мне знать, правильное решение!