1 | initial version |
Yes, it is possible to transform an argument of type QuerySnapshot<Object?>
into an argument of type AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>>
.
You can create a StreamBuilder
or FutureBuilder
widget that takes an argument of type QuerySnapshot<Object?>
and returns an AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>>
by mapping the QuerySnapshot<Object?>
to QuerySnapshot<Map<String, dynamic>>
.
Here's an example of how to do it:
StreamBuilder<QuerySnapshot<Object?>>(
stream: Firestore.instance.collection('users').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
}
return SomeWidget(
snapshot: AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>>(
ConnectionState.active,
snapshot: snapshot.data!.map((doc) =>
QueryDocumentSnapshot<Map<String, dynamic>>.fromMap(doc.data() as Map<String, dynamic>))
as QuerySnapshot<Map<String, dynamic>>
),
),
);
},
);
In the above example, the StreamBuilder
takes an argument of type QuerySnapshot<Object?>
and returns an AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>>
by mapping each document in the snapshot to a QueryDocumentSnapshot<Map<String, dynamic>>
.