在 compose-beta01 之前,使用 InteractionState
在 Jetpack Compose 中提升按下状态非常容易:
@Composable
fun App() {
val interactionState = remember { InteractionState() }
val pressed = interactionState.contains(Interaction.Pressed)
MyComposable(Modifier.clickable(interactionState = interactionState) { })
}
InteractionState 在 beta01 中被移除,现在有明显的方法来复制这种行为。如何使用 clickable
修饰符提升按下状态?
答案 0 :(得分:1)
您是否尝试应用 Compose beta01 发行说明中的说明?
<块引用>InteractionState
已替换为 [Mutable]InteractionSource
interactionState = remember { InteractionState() }
传递给 Button
和 Modifier.clickable()
等组件,而是使用
interactionSource = remember { MutableInteractionSource() }
。Interaction.Pressed in interactionState
,您应该使用 InteractionSource 上的扩展函数,例如
InteractionSource.collectIsPressedAsState().因此,在您的示例中,我会尝试以下操作:
val interactionSource = remember { MutableInteractionSource() }
val pressedState = interactionSource.collectIsPressedAsState()
MyComposable(
Modifier.clickable(
interactionSource = interactionSource,
indication = LocalIndication.current
) {}
)