Reputation: 419
In my flutter app I am checking if a document exists based on certain parameters and based on snapshot.hasData build the widget.
However I remember reading somewhere, at least when coding in Kotlin (and I assume should be true with Flutter), that a snapshot can never be null??
If this is the case, how can I check if a document exists or not and use the fact that the document does not exist to build the widget. i know i am using a query snapshot
i have it running as follows:
FutureBuilder(
future: checkSeller(deal_id_chosen),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot2) {
if (snapshot2.connectionState ==
ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
} else if (snapshot2.connectionState == ConnectionState.done) {
if(snapshot2.data['seller_id'] == null){
return Text('doesnt exist');
}
if(snapshot2.data['seller_id'] == uid_global){
return Text('seller exists');
}
} else if (snapshot2.hasError) {
return Text('no data');
}
return CircularProgressIndicator();
},
),
My Firebase Query a follows (this runs fine but always returns as true, even when a document should not exist)
Future<QuerySnapshot> checkSeller(deal_id) async{
return await Firestore.instance.collection('Deals').where('deal_id'.isEqualTo:deal_id).where('seller_id',isEqualTo:uid_global).getDocuments();
}
Can you do such a query, because I was expecting the FutureBuilder to not satisfy the snapshot2.hasData and hence allow me to switch between either building a widget saying that the seller exists or seller doesn't exist in my case.
Upvotes: 0
Views: 1181
Reputation: 598728
Not having any results is not an error condition for a query. To check if a query had any results, check if the length
of the QuerySnapshot.documents
property is greater than 0.
Upvotes: 2