Попробуйте использовать общие предпочтения, чтобы сохранить их в качестве ключа входа в систему, и проверьте, если это правда, тогда go на главном экране или же перенаправьте на экран входа в систему.
Прежде всего добавьте зависимость общих предпочтений в * 1003. *
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.5.6+2
SplashScreen.dart
Это первый экран, на котором мы проверяем, что если isLogin имеет значение , то go до HomeScreen или иначе перенаправить на LoginScreen
_autoLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
if (!prefs.containsKey('isLogin')) {
prefs.setBool('isLogin', false);
}
if (prefs.getBool('isLogin')) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
));
} else {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
));;
}
}
LoginScreen.dart
_setIsLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', true);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
));
}
MaterialButton(
minWidth: MediaQuery.of(context).size.width,
padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
onPressed: () {
_setIsLogin();
},
child: Text("LOGIN",
textAlign: TextAlign.center,
style: style.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18.0)),
),
HomeScreen.dart
Установить isLogin как false при нажатии Выйти
_logout() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', false);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
));
}
Я надеюсь, что это может помочь вам!