O problema e o seguinte estou buscando os uma lista de botijoes que tem subcoleções(canecas) e essas tbm tem subcoleçoes(racks), porem cada botijao esta recebendo todas as canecas e uma caneca acaba recebendo o rack que deveria estar em outra.
@override
Stream<List<Botijao>> list() {
return firestore
.doc(this.doc.path)
.collection("botijoes")
.snapshots()
.map((query) {
return query.docs.map((doc) {
doc.reference.collection('canecas').snapshots().listen(getCanecas);
return Botijao.fromMap(doc, listCanecas);
}).toList();
});
}
getCanecas(QuerySnapshot snapshot) async {
for (var doc in snapshot.docs) {
getRacks(doc).listen((racks) {
listCanecas
.add(Caneca.fromMap(doc.reference, doc.data()['color'], racks));
});
}
}
Stream<List<Rack>> getRacks(DocumentSnapshot doc) {
return firestore
.doc(doc.reference.path)
.collection("racks")
.snapshots()
.map((query) {
return query.docs.map((docR) {
return Rack.fromMap(docR);
}).toList();
});
}