title: StreamProvider in flutter: do not always change the UI but set when
body: <p>I have a <code>StreamProvider</code> as follows</p>
  <pre><code>Stream&lt;List&lt;Match&gt;&gt; streamMatches() =&gt;
    FirebaseFirestore.instance.collection('matches').snapshots()
      .map((list) =&gt; list.docs.map((doc) =&gt; Match.fromJson(doc.data(), doc.id)).toList());
  
  StreamProvider&lt;List&lt;Match&gt;&gt;(create: (context) =&gt; streamMatches(), initialData: [])
  </code></pre>
  <p>which I use it in a <code>ListView</code> inside a <code>StatelessWidget</code></p>
  <pre><code>   ListView(
        shrinkWrap: true,
        children: _getMatchesWidget(context.watch&lt;List&lt;Match&gt;&gt;())
  </code></pre>
  <p>This is nice because any update to the DB refreshes the stream. However I would like to not have the UI showing the list view change constantly in real-time for new updates (since I believe it might be a bad UX).</p>
  <p>I would like to use a pull-on refresh (<code>RefreshIndicator</code>) and update the list view only <code>onRefresh</code></p>
  <p>Of course I also would like to update the list of matches in background when the user is not visualizing the list (e.g. he paused the app).</p>
  <p>How can I tell the <code>StreamProvider</code> to update only in certain cases or what other <code>Provider</code> should I use for it?</p>