Updated on 2026-08-14
This commit is contained in:
parent
a94db85dfd
commit
648ceb9946
9 changed files with 94 additions and 60 deletions
|
|
@ -4,8 +4,13 @@ import androidx.compose.foundation.lazy.LazyListState
|
|||
import androidx.compose.runtime.*
|
||||
|
||||
@Composable
|
||||
fun InfiniteListHandler(listState: LazyListState, onLoadMore: () -> Boolean, buffer: Int = 2) {
|
||||
val loadMore by remember {
|
||||
fun InfiniteListHandler(
|
||||
listState: LazyListState,
|
||||
onLoadMore: () -> Boolean,
|
||||
buffer: Int = 2,
|
||||
triggerLoadMoreCheckOnItemsCountChange: Boolean = false,
|
||||
) {
|
||||
val loadMore by remember(buffer, listState) {
|
||||
derivedStateOf {
|
||||
val layoutInfo = listState.layoutInfo
|
||||
val totalItemsNumber = layoutInfo.totalItemsCount
|
||||
|
|
@ -15,12 +20,18 @@ fun InfiniteListHandler(listState: LazyListState, onLoadMore: () -> Boolean, buf
|
|||
}
|
||||
}
|
||||
|
||||
val totalItemsCount by remember { derivedStateOf { listState.layoutInfo.totalItemsCount } }
|
||||
var emitted by remember(totalItemsCount) { mutableStateOf(false) }
|
||||
val totalItemsCount by remember(listState) { derivedStateOf { listState.layoutInfo.totalItemsCount } }
|
||||
var emitted by remember(totalItemsCount, buffer, listState) { mutableStateOf(false) }
|
||||
|
||||
LaunchedEffect(loadMore) {
|
||||
if (loadMore && !emitted) {
|
||||
emitted = onLoadMore()
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(totalItemsCount) {
|
||||
if (triggerLoadMoreCheckOnItemsCountChange && loadMore && !emitted) {
|
||||
emitted = onLoadMore()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue