title: UI not waiting for value before rendering
body: <p>I'm attempting to develop a Flutter Android app that will communicate with a Cloud Firestore database. I want it to go through each document in a series of references, get a value from each of these documents, increment a counter from the value that was read, and return it as a Text Widget. Problem is, the value that is read appears to not be reflected in the UI, although I can print out the counter correctly from the values read from the cloud.</p>
  
  <p>I've tried utilizing StreamBuilder and FutureBuilder. My last attempt was by making my function return a Future, and awaiting for the value to be read, to no avail. All that is reflected on the UI is "Instance of Future".</p>
  
  <pre><code>Future&lt;double&gt; calculatePrice(DocumentSnapshot pedido) async{
  
      priceWrapper wrapper = priceWrapper(0);
  
      for (DocumentReference d in pedido.data['requested_products']) {
        d.get().then( (f) {
          wrapper.value += f['value'];
          print(wrapper.value);
        });
      }
      print(wrapper.value);
      return wrapper.value;
    }
  
   Widget buildListItem(BuildContext context, DocumentSnapshot document) {
      return ListTile(
        //...
        trailing: Text("${calculatePrice(document)}",
          style: Theme.of(context).textTheme.subtitle,
        ),
      );
    }
  
  @override
    Widget build(BuildContext context) {
      return Scaffold(
        drawer: CustomDrawer(
          context: context,
        ),
        appBar: AppBar(
          title: Text("Requests"),
        ),
        body: Container(
          //...
          child: StreamBuilder(
            stream: Firestore.instance.collection("currentRequests").snapshots(),
            builder: (context, snapshot) {
              if (!snapshot.hasData) {
                if (snapshot.hasError) {
                  print("SNAPSHOT ERROR: ${snapshot.error}");
                }
                return LinearProgressIndicator();
              }
              return ListView.separated(
                itemCount: snapshot.data.documents.length,
                itemBuilder: (context, index) {
                      return buildListItem(context, snapshot.data.documents[index]);
                },
              );
            },
  
          ),
        ),
      );
    }
  </code></pre>
  
  <p>The "print(wrapper.value)" call prints the expected value, but that does not show up in the UI.</p>