Trato de obtener un botón que tenga este efecto genial de que el radio del borde cambia cuando se toca (como en la aplicación de calculadora predeterminada de Android 12) y al mismo tiempo mantiene el efecto dominó del botón.
Lo que pensé que funcionaría fue esto:
var pressed by remember { mutableStateOf(false) } val borderRadius by animateDpAsState( if (pressed) 10.0.dp else 20.0.dp ) val buttonTitle = "uniqueButton" Button( onClick = { // some on click stuff }, shape = RoundedCornerShape(borderRadius), modifier = Modifier .pointerInput(buttonTitle) { detectTapGestures( onPress = { pressed = true tryAwaitRelease() pressed = false } ) } ) { Text(text = buttonTitle) } Pero el código dentro de la función pasada para onPress nunca se ejecuta. Según tengo entendido, debería serlo, cuando se toca o presiona el botón. ¿Dónde está mi error, no entiendo algo en la documentación ?
La mayoría de los controles de Compose tienen un parámetro de fuente de interactionSource para este propósito. Así es como puedes usarlo:
val interactionSource = remember { MutableInteractionSource() } val pressed by interactionSource.collectIsPressedAsState() Button( onClick = {}, interactionSource = interactionSource, ) { }