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 errorMessage
clave 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 LaunchedEffect
volverá a ejecutarse en caso de que errorMessage
haya cambiado. Lo que puedes hacer es:
LaunchedEffect(errorMessage) {
if (errorMessage!= null) {
resetErrorMessage() // reset errorMessage
scope.launch {
scaffoldState.snackbarHostState.showSnackbar(errorMessage)
}
}
}
resetErrorMessage
Debe establecer el en errorMessage
nulo, por lo LaunchedEffect
que se ejecutará nuevamente, pero como está verificando si no es nulo, no sucederá nada. Pero tan pronto como reciba un nuevo mensaje de error, LaunchedEffect
se ejecutará nuevamente.
No hay comentarios.:
Publicar un comentario