title: Getting current value from Stream
body: <p>There is a StreamBuilder (using RxDart) which displays some date. After click on InkWell widget I need to calculate a new date on basis of old one. The code below simply explains the algo but when I run it there is nothing happens and execution stops after underlined row, i.e. I never see the value of <strong>lastCalcDate</strong>.</p>
  
  <p>GUI:</p>
  
  <pre><code>child: StreamBuilder(
    stream: bloc.getDate,
    builder: (context,snapshot) {
      return InkWell(
        onTap: () =&gt; tapHandler
      );
  }),
  
  void tapHandler() async {
    var lastCalcDate = await bloc.getDate.single;
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    print(lastCalcDate);
    var newCalcDate = lastCalcDate.add(Duration(days:1));
    bloc.setDate(newCalcDate)
  }
  </code></pre>
  
  <p>BLoC:</p>
  
  <pre><code>class Bloc {
    // BehaviourSubject is usedto be sure that last sent date will be accessible in `tapHandler`.
    final _dateSubject = BehaviourSubject&lt;DateTime&gt;(); 
    Observable&lt;DateTime&gt; get getDate =&gt; _dateSubject.stream;
    Function(DateTime) get setDate =&gt; _dateSubject.add;
  }
  </code></pre>
  
  <p>To implement what I need I created some workaround but I don't like it because I fill that I can do the same thing using observables.</p>
  
  <p>BLoC (workaround):</p>
  
  <pre><code>class Bloc {
    final _dateSubject = BehaviourSubject&lt;DateTime&gt;(); 
    Observable&lt;DateTime&gt; get getDate =&gt; _dateSubject.stream;
    DateTime _date;
    void setDateWorkaround(DateTime date) {
      _date = date;
      _dateSubject.add(date);
    }
  }
  </code></pre>
  
  <p>Could you someone to give me advise. What I did wrong?</p>