我想用FirestoreListView()一個聊天。在此聊天中,我想在向上滾動而不是向下滾動時加載更多訊息。
在我的 Firebase Firestore 集合中,我將檔案作為訊息。
所以我的問題是:向上滾動時如何FirestoreListView()加載更多檔案?
有人可以給我一個答案或替代解決方案以在向上滾動時加載更多檔案嗎?
提前致謝。
uj5u.com熱心網友回復:
實際上,您在這里談論的內容有一個特定的術語分頁,它在制作任何提要時都是一種高度可擴展的做法。試試這個,一旦用戶到達底部,再次重繪 螢屏
Widget _buildBody(FeedState state) {
switch (state.status) {
case FeedStatus.loading:
return const Center(child: CircularProgressIndicator());
default:
return RefreshIndicator(
onRefresh: () async {
context.read<FeedBloc>().add(FeedFetchPosts());
},
child: ListView.builder(
controller: _scrollController,
itemCount: state.posts.length,
itemBuilder: (BuildContext context, int index) {
final post = state.posts[index];
final likedPostsState = context.watch<LikedPostsCubit>().state;
final isLiked = likedPostsState.likedPostIds.contains(post!.id);
final recentlyLiked =
likedPostsState.recentlyLikedPostIds.contains(post.id);
return PostView(
post: post,
isLiked: isLiked,
recentlyLiked: recentlyLiked,
onLike: () {
if (isLiked) {
context.read<LikedPostsCubit>().unlikePost(post: post);
} else {
context.read<LikedPostsCubit>().likePost(post: post);
}
},
);
},
),
);
}}
uj5u.com熱心網友回復:
我的解決方案不是在您向上滾動時加載更多訊息。對我來說,解決方案是使用一個按鈕來制作它,該按鈕使用.where()方法和時間戳從 firebase 加載更多資料:
await FirebaseFirestore.instance
.collection("chats")
.doc(documentId)
.collection("messages")
.where("timestamp", isLessThan: timestamps[0])
.orderBy("timestamp", descending: true)
.limit(20)
.get()
.then((value) {...});
現在串列視圖首先顯示最舊的訊息。
要解決這個問題,請觀看此視頻:https ://www.youtube.com/watch?v=VOV2V0asFaE
希望能幫助到你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/460039.html
上一篇:xamarin.android中是否有等效的ListView.ItemsSource?
下一篇:在顫動中重置ListView
