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