https://kotlinlang.org logo
#compose
Title
# compose
i

Ink

09/28/2023, 12:25 PM
Why my app crashes when I run this code:
Copy code
val scrollState = rememberLazyListState(0)
var isLastItemVisible by remember { mutableStateOf(false) }
Copy code
LaunchedEffect(scrollState) {
    while (!isLastItemVisible) {
        val lastVisibleItemIndex = scrollState.layoutInfo.visibleItemsInfo.lastOrNull()?.index
        val totalItemsCount = scrollState.layoutInfo.totalItemsCount
        isLastItemVisible = lastVisibleItemIndex != null && lastVisibleItemIndex == totalItemsCount - 1
    }

    onLastItemSeen()
}
When I add any delay at last line in loop there is everything right. I display items in LazyRow.
a

abbic

09/28/2023, 1:40 PM
what error do you get? also seems to me like the LaunchedEffect api is being abused here
this was my stab at cleaning this up, i dont know if it solves your problem
Copy code
val listState = rememberLazyListState()
val isLastItemVisible by remember {
    derivedStateOf {
        val lastVisibleItemIndex = listState.layoutInfo.visibleItemsInfo.lastOrNull()?.index
        val totalItemsCount = listState.layoutInfo.totalItemsCount
        lastVisibleItemIndex != null && lastVisibleItemIndex == totalItemsCount - 1
    }
}
LaunchedEffect(key1 = isLastItemVisible) {
    if (isLastItemVisible) onLastItemSeen()
}
2 Views