From 7d489e5d5152db7e7034eefaaed4529de8cdc624 Mon Sep 17 00:00:00 2001 From: AnranYus Date: Sun, 16 Jun 2024 12:35:35 +0800 Subject: [PATCH] fix: can not load more --- .../com/lsp/view/ui/compose/PostActivity.kt | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/lsp/view/ui/compose/PostActivity.kt b/app/src/main/java/com/lsp/view/ui/compose/PostActivity.kt index 476eaae..79387fb 100644 --- a/app/src/main/java/com/lsp/view/ui/compose/PostActivity.kt +++ b/app/src/main/java/com/lsp/view/ui/compose/PostActivity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.content.ServiceConnection import android.os.Bundle import android.os.IBinder +import android.util.Log import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -221,27 +222,26 @@ fun PostListScreen( LaunchedEffect(listState) { - snapshotFlow { listState.layoutInfo }.also{ - it.collect{ - if (lastScrollOffset listState.firstVisibleItemScrollOffset && lastScrollPosition > listState.firstVisibleItemIndex){ - scrollDirectionState = 1 - } - lastScrollOffset = listState.firstVisibleItemScrollOffset - lastScrollPosition = listState.firstVisibleItemIndex + snapshotFlow { listState.layoutInfo }.map { layoutInfo -> + if (lastScrollOffset < listState.firstVisibleItemScrollOffset && lastScrollPosition < listState.firstVisibleItemIndex) { + scrollDirectionState = -1 } - }.map { layoutInfo -> - layoutInfo.visibleItemsInfo.lastOrNull()?.index == postList.lastIndex - }.distinctUntilChanged().collect { reachedEnd -> - //避免初次加载数据时,list未绘制导致被判断为到达底部 - if (reachedEnd && listState.firstVisibleItemIndex != 0) { - withContext(Dispatchers.IO){ - viewModel.fetchPost() - } + if (lastScrollOffset > listState.firstVisibleItemScrollOffset && lastScrollPosition > listState.firstVisibleItemIndex) { + scrollDirectionState = 1 + } + lastScrollOffset = listState.firstVisibleItemScrollOffset + lastScrollPosition = listState.firstVisibleItemIndex + + layoutInfo.visibleItemsInfo.lastOrNull()?.index == postList.lastIndex + }.distinctUntilChanged().collect { reachedEnd -> + Log.d(TAG, reachedEnd.toString()) + //避免初次加载数据时,list未绘制导致被判断为到达底部 + if (reachedEnd && listState.firstVisibleItemIndex != 0) { + withContext(Dispatchers.IO) { + viewModel.fetchPost() } } + } } Box(modifier = Modifier.fillMaxSize()) { @@ -280,7 +280,7 @@ fun PostListScreen( PullRefreshIndicator(refreshing, pullRefreshState, Modifier .align(Alignment.TopCenter) - .padding(searchBarHeightSize+searchBarPadding)) + .padding(searchBarHeightSize + searchBarPadding)) AnimatedVisibility( visible = scrollDirectionState != -1,