Stream listen is not called when limit is added in Firestore query in Dart / Flutter
final _startAtTimestamp = Timestamp.fromMillisecondsSinceEpoch(DateTime.parse('2000-01-01 01:01:01.001').millisecondsSinceEpoch);
I have used below code in my initState()
function:
@override
void initState() {
//
super.initState();
Future.delayed(Duration(seconds: 1), () async {
//
Stream<QuerySnapshot> xstream = FirebaseFirestore.instance
.collection('messages')
.where('encSenderUId', isEqualTo: _loggedInUserId)
.where('encReceiverUId', isEqualTo: widget.encUId)
.orderBy('messageId', descending: true)
.startAt([_startAtTimestamp])
.limit(1)
.snapshots();
xstream.listen((event) {
//
print('Hiii, I am listening..');
//
}, onDone: () {
print("Task Done single");
}, onError: (error) {
print("Some Error ${error.toString()}");
});
});
}
Case 1: If I DO NOT use limit()
in query then listen
message is printed once when screen is rendered first time and also listen
is called when something is changed in Firestore stream (eg. added new document / removed a document).
Case 2: If I use limit()
in query then listen
message is printed once when screen is rendered first time but listen
is NOT called when something is changed in Firestore stream (eg. added new document / removed a document).
I have to use limit()
to fetch one document according to set orderBy
. I am 100% sure that limit()
is not allowing stream to listen any event.
Firestore structure is as:
Kindly suggest how can I use limit
with `listen' to fix this issue. Thanks a lot.
onError
inlisten
method? – BrightmanonDone
andonError
callback methods with listen but system is not going into any of these 3listen
,onDone
andonError
methods. I have updated question by addingonDone
andonError
at the end. Kindly check and suggest me. Thanks. – BadilloFirestore Structure
with the query. BTW do you have any solution of this issue? Kindly share. Thanks. – Badillo