在我的屏幕上,我有MyTopItem()
和以下的项目列表。当我开始滚动我的列表,我想隐藏MyTopItem()
。
它工作正常,但滚动是如此滞后。这是因为在滚动所有项目在MyLazyVerticalGridItemsSection()
重组。
如何避免在滚动时重新排版?
Column(Modifier.fillMaxSize()) {
val listState = rememberLazyListState()
AnimatedVisibility(
visible = listState.firstVisibleItemScrollOffset < 1,
enter = expandVertically(),
exit = shrinkVertically()
) {
MyTopItem()
}
MyLazyVerticalGridItemsSection(
items = myItems,
listState = listState
)
}
1条答案
按热度按时间kg7wmglp1#
发生这种情况是因为您直接使用
listState.firstVisibleItemScrollOffset
,所以每次该值更改时,都会触发重新组合。在这种情况下,应该使用
derivedStateOf
-它只会在计算结果改变时触发重组: