У меня есть экран входа в систему, в моей кнопке формы я проверяю, а затем вызываю Shared Preferences, чтобы установить флаг входа, и initState я вызываю метод для проверки значения и перенаправления на homeScreen. Теперь все прошло хорошо, но я могу видеть форму входа на секунду или около того, а затем меня перенаправляют домой. Я хочу вообще не видеть форму входа. Как я могу это сделать? Вот содержание метода initState:
_loadLoginStatus() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_loginStatus =prefs.getBool('loginStatus') ?? false;
if (_loginStatus == true){
Navigator.push(
context, MaterialPageRoute(builder: (context) => HomeScreen()));
}
});
}
Не устанавливайте экран входа в систему в качестве домашнего экрана в AppWidget.
Вместо этого создайте LoadingScreen или SplashScreen и проверьте здесь статус входа.
class LoadingScreen extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<LoadingScreen> {
@override
Widget build(BuildContext context) {
_checkLogin(context);
return Scaffold(body: Center(child: CircularProgressIndicator()));
}
_checkLogin(BuildContext context) async {
// do what you want with await functions
if (condition) {
Navigator.push(
context, MaterialPageRoute(builder: (context) => HomeScreen()));
} else {
Navigator.push(
context, MaterialPageRoute(builder: (context) => LoginScreen()));
}
}
}