title: How to tell a StreamBuilder that I'm retrying to load data after an error
body: <p>I have a stream builder for loading a list of video posts. Whenever an error occurs, I add an error to the sink and the <strong>StreamBuilder</strong> displays an error message with a "Try Again" button. My issue is that when I press the button, Nothing (visually) happens but I want to replace the error message with a <strong>spinningLoader</strong> while it's retrying. </p>
  
  <p>How would I achieve this? </p>
  
  <p>I was thinking of adding a boolean to the sink and check if snapshot.data is bool and return the spinningLoader if it is, but this seems counter-intuitive.</p>
  
  <pre><code>@override
    Widget build(BuildContext context) {
      return SafeArea(
        child: Container(
          color: backgroundColor,
          child: StreamBuilder(
            stream: _streamController.stream,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return buildRelatedList(snapshot.data);
              } else if (snapshot.hasError) {
                return retryButton();
              } else {
                return _spinningLoader;
              }
            },
          ),
        ),
      );
    }
  
    _fetchVideos() async {
      List videos = await RelatedVideos.fetchVideos(
          id: widget.id);
      if (videos.isEmpty) {
        _streamController.sink.addError('error loading');
      } else {
        _streamController.sink.add(videos);
      }
    }
  </code></pre>