首页 > 解决方案 > StreamSink 和 Sink 有什么区别?

问题描述

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

标签: dart

解决方案


StreamSink类在Sink之上实现了StreamConsumerEventSink

StreamConsumer 允许向 Sink 添加多个 Stream,因此您的 StreamSink 可以“输出”多个流。

EventSink 提供了将数据添加到流中的方法。


推荐阅读