我正在编写一个简单的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的顶部实现EventSinkSink

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

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

关于dart - StreamSink和Sink有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57385482/

10-10 19:31