так что у меня есть функция, которая получает данные из firebase firestore для моего чата, я хотел добавить к нему нумерацию страниц.
я создал эту функцию:
getMessage() {
if (!hasMore) {
return;
}
if (isLoading) {
return;
}
if (lastDoc == null) {
_querySnapshot = widget.messageDocRef
.collection('Chat')
.orderBy('timestamp', descending: true)
.limit(15)
.getDocuments();
} else if (lastDoc != null) {
_querySnapshot = widget.messageDocRef
.collection('Chat')
.orderBy('timestamp', descending: true)
.startAfter(
lastDoc.data['timestamp'].toDate().add(Duration(hours: 1)))
.limit(15)
.getDocuments();
}
_querySnapshot.then((docSnap) {
lastDoc = docSnap.documents[docSnap.documents.length - 1];
print(lastDoc);
print(lastDoc.data['content']);
print(lastDoc.data['timestamp'].toDate().add(Duration(hours: 1)));
});
return _querySnapshot.asStream();
}
в этой строке выведите правильное время, сохраненное в firestore.
print ( lastDo c .data ['timestamp']. toDate (). add (Duration (hours: 1)));
, но по какой-то причине, когда я пытаюсь загрузить больше сообщений с
startAfter (lastDo c .data ['timestamp']. ToDate (). Add (Duration (hours: 1)))
экраны становятся красными с этим сообщение об ошибке: тип 'DateTime' не является подтипом типа 'Список'
Я пробовал с lastDo c .data ['timestamp'] & с lastDo c .data ['timestamp']. toDate () и с lastDo c .data ['timestamp']. toDate (). add (Продолжительность (часы: 1)) , но ничего не произошло, и возникает та же ошибка.
NOTE , что я назначаю getMessage () для streamBuilder.
это мой StreamBuilder
StreamBuilder(
//TODO add pagination later...
stream: getMessages(),
/*stream: widget.messageDocRef
.collection('Chat')
.orderBy('timestamp', descending: true)
.limit(80)
.getDocuments()
.asStream(),*/
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(
child: circularProgress(),
);
}
final messages = snapshot.data.documents;
List<MessageBubble> messagesBubble = [];
for (var message in messages) {
final messageText = message.data['content'];
final messageSender = message.data['from'];
final messageType = message.data['type'];
final messageBubble = MessageBubble(
type: messageType,
text: messageText,
isMe: widget.currentUser.id == messageSender,
);
messagesBubble.add(messageBubble);
}
return Expanded(
child: ListView(
physics: const AlwaysScrollableScrollPhysics(),
reverse: true,
controller: _scrollController,
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
children: messagesBubble,
),
);
},
);
спасибо!