, поэтому я искал способ добавить нумерацию страниц в мое приложение " Чат " уже более недели, но все равно не повезло: (
это мой код
Widget build(BuildContext context) {
return StreamBuilder(
//TODO add pagination later...
stream: widget.messageDocRef
.collection("Chat")
.orderBy('timestamp', descending: true)
.limit(15)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(
child: circularProgress(),
);
}
final messages = snapshot.data.documents;
for (int i = 0; i < snapshot.data.documents.length; i++) {
DocumentSnapshot doc = snapshot.data.documents.elementAt(i);
print(doc.metadata.isFromCache
? "DATA FROM CACHE"
: "DATA FROM INTERNET");
}
List<MessageBubble> messagesBubble = [];
for (var message in messages) {
final docId = message.documentID;
final messageText = message.data['content'];
final messageSender = message.data['from'];
final messageType = message.data['type'];
final messageBubble = MessageBubble(
messageDocRef: widget.messageDocRef,
docId: docId,
type: messageType,
text: messageText,
isMe: widget.currentUser.id == messageSender,
);
messagesBubble.add(messageBubble);
}
return Expanded(
child: ListView(
physics: const AlwaysScrollableScrollPhysics(),
reverse: true,
controller: this._scrollController,
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
children: messagesBubble,
),
);
},
);}
Мое состояние инициализации
void initState() {
super.initState();
_scrollController.addListener(() {
double maxScroll = _scrollController.position.maxScrollExtent;
double currentScroll = _scrollController.position.pixels;
if (maxScroll == currentScroll) {
print("get more products");
}
});}
MessageBubble - это класс для отображения каждого сообщения в отдельном пузыре.
До теперь все работает отлично! .. но мне нужно реализовать разбиение на страницы и не потерять обновление StreamBuilder в реальном времени («Отображение нового сообщения», «Удаление удаленных сообщений» ... et c).
Я буквально не знаю, как мне это сделать, я попробовал , используя несколько запросов все еще не повезло.
Я хочу, чтобы пользователь быть в состоянии видеть старые сообщения , когда он прокручивает вверх и видеть новые сообщения , когда он прокручивает вниз .
HELP !!!