Esto es trabajo para mí. En realidad, estaba trabajando con bloc pero mi problema era bloc de pantalla de inicio de sesión. No se estaba actualizando después de cerrar la sesión. Tenía los datos del modelo anterior. Incluso, ingresé la entrada incorrecta. Iba a la pantalla de inicio.
Paso 1:
Navigator.of(context).pushNamedAndRemoveUntil(
UIData.initialRoute, (Route<dynamic> route) => false);
dónde,
UIData.initialRoute = "/" or "/login"
Paso 2:
Está trabajando para actualizar la pantalla. Si está trabajando con Bloc, será muy útil.
runApp(MyApp());
dónde,
MyApp() is the root class.
Código de clase raíz (es decir, MyApp)
class MyApp extends StatelessWidget {
final materialApp = Provider(
child: MaterialApp(
title: UIData.appName,
theme: ThemeData(accentColor: UIColor().getAppbarColor(),
fontFamily: UIData.quickFont,
),
debugShowCheckedModeBanner: false,
initialRoute: UIData.initialRoute,
routes: {
UIData.initialRoute: (context) => SplashScreen(),
UIData.loginRoute: (context) => LoginScreen(),
UIData.homeRoute: (context) => HomeScreen(),
},
onUnknownRoute: (RouteSettings rs) => new MaterialPageRoute(
builder: (context) => new NotFoundPage(
appTitle: UIData.coming_soon,
icon: FontAwesomeIcons.solidSmile,
title: UIData.coming_soon,
message: "Under Development",
iconColor: Colors.green,
)
)));
@override
Widget build(BuildContext context) {
return materialApp;
}
}
void main() => runApp(MyApp());
Aquí está Mi método de cierre de sesión ,
void logout() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.clear();
Navigator.of(context).pushNamedAndRemoveUntil(
UIData.initialRoute, (Route<dynamic> route) => false);
runApp(MyApp());
}