title: How to prevent FutureBuilder to rebuild even its data is unchanged?
body: <p>I am currently developing a Flutter App which uses a lots of REST APIs to communicate with server side. I am facing some performance issues related to FutureBuilder widget implemented as below:</p>
  
  <pre><code>RefreshIndicator(
    displacement: 100.0,
    onRefresh: _refreshLastEntries,
    child: FutureBuilder&lt;List&lt;Entry&gt;&gt; (
      future: lastEntriesList,
      builder: (context, snapshot) {
        if(snapshot.hasError) print(snapshot.error);
        if(snapshot.data == null) return Container();
        else return ListView.builder(
          controller: _controller,
          itemCount: snapshot.data.length,
          itemBuilder: (context, index) {
            return Padding(
              padding: const EdgeInsets.all(10.0),
              child: EntryCard(entry: snapshot.data[index])
            );
          },
        );
      },
    ),
  ),
  </code></pre>
  
  <p>By the way, there are 2 more FutureBuilder implementations with RefreshIndicator in the same page build, and they are wrapped with a PageView. The Flutter Performance tab in Android Studio showing avg. fps of 30 frames/second (sometimes &lt; 30) in debug mode. It is better in release mode but still below 60 fps that I can notice a laggy animation.</p>
  
  <p>Well I know the problem (not sure though) is FutureBuilder trying to rebuild as long as the <code>AsyncSnapshot</code> has data. But I couldn't figure out a better implementation of this. The refresh function <code>_refreshLastEntries()</code> is implemented as:</p>
  
  <pre><code>Future&lt;Null&gt; _refreshLastEntries() async {
    setState(() {
       lastEntriesList = fetchLastEntries(2);
    });
    return Future.delayed(Duration(milliseconds: 600));
  }
  </code></pre>
  
  <p>And the <code>fetchLastEntries(int)</code> is just for the getting the data and map it into some EntryModel class. 
  I have tried a setting a global value after successfully getting the data and then use it for building the ListView but it did not work.</p>
  
  <p>I am testing this app with a Xiaomi MI6 with Snapdragon 835 and Adreno 540 if that matters.</p>
  
  <p>I will not attach any other code as the whole PageView build code since it is hard to reproduce the same build, thanks!</p>