Page cover image

Notificaciones

En Jetpack Compose, puedes crear fácilmente diálogos y Snackbars para mostrar mensajes o notificaciones. A continuación te muestro cómo implementar un AlertDialog y un Snackbar en una aplicación.

AlertDialog

Es una ventana emergente que solicita la atención del usuario y generalmente ofrece una decisión (aceptar, cancelar, etc.). Para poder hacer esto necesitamos crear un estado booleano que va controlar si el dialogo se muestra o no.

@Composable
fun DialogExample() {
    var showDialog by remember { mutableStateOf(false) }

    // Botón para mostrar el diálogo
    Button(onClick = { showDialog = true }) {
        Text("Mostrar Dialogo")
    }

    // Mostrar AlertDialog
    if (showDialog) {
        AlertDialog(
            onDismissRequest = { showDialog = false },
            title = { Text(text = "Título del Diálogo") },
            text = { Text("Este es un mensaje dentro del diálogo.") },
            confirmButton = {
                Button(onClick = { showDialog = false }) {
                    Text("Aceptar")
                }
            },
            dismissButton = {
                Button(onClick = { showDialog = false }) {
                    Text("Cancelar")
                }
            }
        )
    }
}

Snackbar

Un Snackbar es una pequeña notificación que aparece en la parte inferior de la pantalla, generalmente para proporcionar comentarios sobre una operación realizada por el usuario. Vamos a configurar este tipo de notificaciones para que se muestren dentro del snackBarHost de un Scaffold.

@Composable
fun SnackbarExample() {
    val snackbarHostState = remember { SnackbarHostState() }
    val scope = rememberCoroutineScope()

    Scaffold(
        snackbarHost = { SnackbarHost(snackbarHostState) },
        content = { innerPadding ->
            Column(
                modifier = Modifier
                    .fillMaxSize()
                    .padding(innerPadding)
                    .padding(16.dp),
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                Button(onClick = {
                    scope.launch {
                        snackbarHostState.showSnackbar("Este es un Snackbar")
                    }
                }) {
                    Text("Mostrar Snackbar")
                }
            }
        }
    )
}

Última actualización

¿Te fue útil?