问题不在于合并,而在于StreamBuilder根据LATEST快照更新UI,换句话说,它不堆叠快照,而是仅拾取最后发出的事件,换句话说,将流合并并合并stream确实包含所有合并流的数据,但是streamBuilder将仅显示最后一个stream发出的事件,一种变通方法是:
StreamBuilder<List<QuerySnapshot>>(stream: streamGroup, builder: (BuildContext context, AsyncSnapshot<List<QuerySnapshot>> snapshotList){ if(!snapshotList.hasData){ return MyLoadingWidget(); } // note that snapshotList.data is the actual list of querysnapshots, snapshotList alone is just an AsyncSnapshot int lengthOfDocs=0; int querySnapShotCounter = 0; snapshotList.data.forEach((snap){lengthOfDocs = lengthOfDocs + snap.documents.length;}); int counter = 0; return ListView.builder( itemCount: lengthOfDocs, itemBuilder: (_,int index){try{documentSnapshot doc = snapshotList.data[querySnapShotCounter].documents[counter];counter = counter + 1 ; return new Container(child: Text(doc.data["name"]));}catch(RangeError){ querySnapShotCounter = querySnapShotCounter+1; counter = 0; documentSnapshot doc = snapshotList.data[querySnapShotCounter].documents[counter]; counter = counter + 1 ; return new Container(child: Text(doc.data["name"]));} }, ); },


