title: What is the difference between StreamSink and Sink?
body: <p>I was coding a simple dart code and I couldn't see any difference between the implementation of StreamSink and Sink. By the way both have the same behaviour in this case.</p>
  
  <pre><code>int _counter = 0;
  
    final _counterStreamController = StreamController&lt;int&gt;();
    final _counterEventController = StreamController&lt;CounterEvent&gt;();
  
    CounterBloc() {
      _counterEventController.stream.listen(mapEventToState);
    }
  
    StreamSink&lt;int&gt; get _sinkCounter =&gt; _counterStreamController.sink;
    Stream&lt;int&gt; get counter =&gt; _counterStreamController.stream;
  
    Sink&lt;CounterEvent&gt; get counterEventSink =&gt; _counterEventController.sink;
  
    void mapEventToState(CounterEvent event) {
      if (event is IncrementEvent) {
        _counter++;
      }
  
      _sinkCounter.add(_counter);
    }
  </code></pre>