StreamSink和Sink有什么区别?

时间:2019-08-07 00:22:18

标签: dart

我正在编写一个简单的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);
  }

1 个答案:

答案 0 :(得分:0)

StreamSink类在StreamConsumer的顶部实现了EventSinkSink

StreamConsumer允许向一个接收器添加多个流,因此您的StreamSink可以“输出”多个流。

除了流中的数据外,EventSink还提供了addErrors的方法。

相关问题