GOOGLE ADS

lunes, 25 de abril de 2022

Componer Snackbar no aparece en errores repetidos

Soy nuevo en Jetpack Compose y estoy tratando de mostrar una barra de error cada vez que el mensaje de error que estoy observando no es nulo.

Scaffold(scaffoldState = scaffoldState) {
LaunchedEffect(errorMessage) {
if (errorMessage!= null) {
scope.launch {
scaffoldState.snackbarHostState.showSnackbar(errorMessage)
}
}
}
Column(horizontalAlignment = Alignment.CenterHorizontally) {
//some ui components inside here
}
}

El problema en el código anterior es que, la primera vez que el mensaje de error cambia de nulo a un mensaje en particular, parece correcto. Sin embargo, en una acción repetida del usuario que produce el mismo mensaje de error, no vuelve a aparecer.

PD: sé que esto está sucediendo debido a que se colocó la errorMessageclave as dentro del archivo LaunchedEffect. Mi duda es que, ¿existe un enfoque diferente para lograr lo que quiero?


Solución del problema

Esto sucede porque LaunchedEffectvolverá a ejecutarse en caso de que errorMessagehaya cambiado. Lo que puedes hacer es:

LaunchedEffect(errorMessage) {
if (errorMessage!= null) {
resetErrorMessage() // reset errorMessage
scope.launch {
scaffoldState.snackbarHostState.showSnackbar(errorMessage)
}
}
}

resetErrorMessageDebe establecer el en errorMessagenulo, por lo LaunchedEffectque se ejecutará nuevamente, pero como está verificando si no es nulo, no sucederá nada. Pero tan pronto como reciba un nuevo mensaje de error, LaunchedEffectse ejecutará nuevamente.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...