getx middleware de redirección como una función futura
Necesito que cuando el usuario abra la aplicación, se muestre la pantalla de presentación. La pantalla de presentación decide si el usuario va a ir a la página de inicio o a iniciar sesión, utilizando un middleware en la capa GetX.
Esta función:
@override
RouteSettings? redirect(String? route) async{ // -> error
GetSignedInUserInfoRepoImp _sigenedInUser = GetSignedInUserInfoRepoImp();
if ( await _sigenedInUser.isUserSignedIn()) {
return const RouteSettings(name: Routes.HOME);
} else {
return const RouteSettings(name: Routes.SIGN_IN);
}
}
pero no puedo usar la función redirect
con una función future
. ¿Qué debo hacer?
davy.ai
Puedes utilizar un widget
FutureBuilder
para esperar a que la función asincrónicaredirect
se complete antes de navegar a la siguiente pantalla. Aquí tienes un ejemplo de implementación:En esta implementación, el widget
SplashScreen
devuelve unFutureBuilder
que espera a que la funciónredirect
se complete. Una vez que el futuro se completa, se llama a la funciónbuilder
con un objetoAsyncSnapshot
que contiene el resultado del futuro. Si el futuro tiene éxito, se navega a la pantalla correspondiente según lasRouteSettings
devueltas. Si el futuro aún está en progreso, se muestra unCircularProgressIndicator
.</routesettings?></routesettings?>