A [androidx.
@ExperimentalComposeUiApi
@Composable
fun PointerInputModifierNodeSample() {
class OnPointerEventNode(var callback: (PointerEvent) -> Unit) :
PointerInputModifierNode, Modifier.Node() {
override fun onPointerEvent(
pointerEvent: PointerEvent,
pass: PointerEventPass,
bounds: IntSize,
) {
if (pass == PointerEventPass.Initial) {
callback(pointerEvent)
}
}
override fun onCancelPointerInput() {
// Do nothing
}
}
data class PointerInputElement(val callback: (PointerEvent) -> Unit) :
ModifierNodeElement<OnPointerEventNode>() {
override fun create() = OnPointerEventNode(callback)
override fun update(node: OnPointerEventNode) {
node.callback = callback
}
override fun InspectorInfo.inspectableProperties() {
name = "onPointerEvent"
properties["callback"] = callback
}
}
fun Modifier.onPointerEvent(callback: (PointerEvent) -> Unit) =
this then PointerInputElement(callback)
}