title: how to end (complete) an async* stream created based on another infinite stream?
body: <p>I have an <strong>await for</strong> loop getting data from an infinite stream inside an <strong>stream  function async*</strong> function
  I would like to complete (end) the stream on certain condition.</p>
  
  <p>I was expecting <code>break;</code> out of the <code>await for</code> will do it but it does not.
  any suggestions?
  here is a code snippet:</p>
  
  <pre><code>Stream&lt;int&gt; conditionLoop() async* {     
    await for (double value in hardware.inputStream()) {
        if (value &lt; 0.0 || value &gt; 98.0) break;
      yield value.round();
    }
    print('stream completed!');
  }
  </code></pre>
  
  <p>The <strong>print('stream completed!')</strong> command never happened and the StreamBuilder widget never gets "ConnectionState.done"</p>
  
  <p>Thanks.</p>