我正在编写一个简单的dart代码,但看不到StreamSink和Sink的实现之间的任何区别。顺便说一下,在这种情况下,两者都有相同的行为。
int _counter = 0;
final _counterStreamController = StreamController<int>();
final _counterEventController = StreamController<CounterEvent>();
CounterBloc() {
_counterEventController.stream.listen(mapEventToState);
}
StreamSink<int> get _sinkCounter => _counterStreamController.sink;
Stream<int> get counter => _counterStreamController.stream;
Sink<CounterEvent> get counterEventSink => _counterEventController.sink;
void mapEventToState(CounterEvent event) {
if (event is IncrementEvent) {
_counter++;
}
_sinkCounter.add(_counter);
}
答案 0 :(得分:0)
StreamSink类在StreamConsumer的顶部实现了EventSink和Sink。
StreamConsumer允许向一个接收器添加多个流,因此您的StreamSink可以“输出”多个流。
除了流中的数据外,EventSink还提供了addErrors的方法。