[英]Hoist pressed state in Jetpack Compose Beta 1 after InteractionState was removed
在 compose-beta01 之前,使用InteractionState
在 Jetpack Compose 中提升按下的 state 非常容易:
@Composable
fun App() {
val interactionState = remember { InteractionState() }
val pressed = interactionState.contains(Interaction.Pressed)
MyComposable(Modifier.clickable(interactionState = interactionState) { })
}
InteractionState 在 beta01 中被删除,现在有明显的方法来复制这种行为。 如何使用clickable
的修饰符提升按下的 state?
您是否尝试过应用Compose beta01发行说明中解释的内容?
InteractionState
已替换为[Mutable]InteractionSource
- 接口负责发出/收集交互事件。
- 不要将
interactionState = remember { InteractionState() }
传递给Button
和Modifier.clickable()
等组件,而是使用interactionSource = remember { MutableInteractionSource() }
。- 而不是:
Interaction.Pressed in interactionState
您应该使用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。- 对于复杂的用例,您可以使用 InteractionSource.interactions 来观察交互的 stream。 有关详细信息,请参阅 InteractionSource 文档和示例。
- ( I85965 、 b/152525426 、 b/171913923 、 b/171710801 、 b/174852378 )
所以,在你的例子中,我会尝试这样的事情:
val interactionSource = remember { MutableInteractionSource() }
val pressedState = interactionSource.collectIsPressedAsState()
MyComposable(
Modifier.clickable(
interactionSource = interactionSource,
indication = LocalIndication.current
) {}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.