我有一个带有Button
s的LazyVerticalGrid
:
@Composable
private fun Grid(
items: List<ChoiceSelectorItem>,
modifier: Modifier = Modifier,
notifyEvent: (MyUIEvent) -> Unit
) {
LazyVerticalGrid(
modifier = modifier
) {
items.forEach { item ->
item {
Button(onClick = {
notifyEvent(
MyUIEvent.OnItemClicked(
item = item,
)
)
}) {
Text(text = item.name)
}
}
}
}
}
每次我点击一个项目,就会触发OnItemClicked
事件,更新UI状态,并将一个新的items
列表发送到Grid
。结果,我可以在屏幕上看到一组新的项目。有时可能是2个项目,有时可能是5个。
问题是-当我点击按钮时-它启动“指示”涟漪效应和重组触发器,网格立即显示新的项目列表(甚至在指示动画结束之前)。因此,例如当我单击其中一个项目时,指示动画在该项目上启动,当列表更新时-我可以收到3行项目,而不是1行,并且我可以在项目上看到指示动画的第二部分,该部分不在用户点击的位置之下。
有没有办法延迟重组,直到按钮的指示涟漪动画完成?也许有其他的方法来解决这个问题?
1条答案
按热度按时间bvn4nwqk1#
通过使用
AnimatedContent
在重新合成之间添加动画解决了这个问题: