我正在编写一个简单的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);
}
最佳答案
StreamSink类在StreamConsumer的顶部实现EventSink和Sink。
StreamConsumer允许将多个流添加到一个接收器,因此您的StreamSink可以“输出”多个流。
EventSink除了向流提供数据之外,还提供addErrors的方法。
关于dart - StreamSink和Sink有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57385482/