scrollState로 rememberLazyListState
와 rememberScrollState
가 있으며, 현재 스크롤되고 있는 상태를 저장한다.
이를 이용하여 스크롤을 원하는 위치로 이동할 수 있다.
@Composable
fun SampleScreen(){
val state = rememberLazyListState()
val coroutineScope = rememberCoroutineScope()
Button(onClick = {
coroutineScope.launch{
state.scrollToItem(0)
}
})
}
LazyListState는 매우 자주 변경되므로 해당 속성을 읽는 것만으로도 불필요한 Recomposition이 트리거될 수 있다. 이를 방지하려면 remember
와 derivedStateOf
를 사용하여 상태를 래핑해야 한다. 이렇게 하면 계산에 사용된 상태 속성이 변경될 때만 Recomposition이 발생한다.
val state = rememberLazyListState()
val showButton by remember{
derivedStateOf {
state.firstVisibleItemIndex > 0
}
}