title: Usage of FutureBuilder with setState
body: <p>How to use the <code>FutureBuilder</code> with <code>setState</code> properly? For example, when i create a stateful widget its starting to load data (FutureBuilder) and then i should update the list with new data, so i use setState, but its starting to loop for infinity (because i rebuild the widget again), any solutions?</p>
  
  <pre><code>class FeedListState extends State&lt;FeedList&gt; {
  
    Future&lt;Null&gt; updateList() async {
      await widget.feeds.update();
      setState(() {
        widget.items = widget.feeds.getList();
      });
      //widget.items = widget.feeds.getList();
    }
  
    @override
    Widget build(BuildContext context) {
      return new FutureBuilder&lt;Null&gt;(
        future: updateList(),
        builder: (BuildContext context, AsyncSnapshot&lt;String&gt; snapshot) {
          switch (snapshot.connectionState) {
            case ConnectionState.waiting:
              return new Center(
                child: new CircularProgressIndicator(),
              );
            default:
              if (snapshot.hasError)
                return new Text('Error: ${snapshot.error}');
              else
                return new Scrollbar(
                  child: new RefreshIndicator(
                    child: ListView.builder(
                      physics:
                          const AlwaysScrollableScrollPhysics(), //Even if zero elements to update scroll
                      itemCount: widget.items.length,
                      itemBuilder: (context, index) {
                        return FeedListItem(widget.items[index]);
                      },
                    ),
                    onRefresh: updateList,
                  ),
                );
          }
        },
      );
    }
  }
  </code></pre>