Обычно для приложений, которые я создаю, я поддерживаю логическую переменную с именем «auth» в объекте пользователя и меняю ее на true, когда пользователь входит в систему.
И в идеале a "Spla sh Экран" с этим кодом.
if(user.auth)
{
//User Authenticated
Navigator.push(context, MaterialPageRoute(builder: (context) => HomeScreen())));
}else{
//User not Authenticated
Navigator.push(context, MaterialPageRoute(builder: (context) => LoginScreen())));
}
После аутентификации не забудьте сохранить объект пользователя или переменную аутентификации в локальном хранилище / Shared Настройки , чтобы данные не терялись после выхода пользователя из приложения.
Код для сохранения объекта пользователя:
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString("current_user",json.encode(user.toJson()));
Класс пользователя :
class User{
final String username;
final String email;
//is user signed in?
bool isAuth;
User({this.username, this.email,this.isAuth});
User.fromData(Map<String,dynamic> data)
: username = data['Username'],
email = data['email'],
isAuth = data['isAuth'] ?? false,
Map<String,dynamic> toJson() {
return {
"Username" : username,
"email" : email,
"isAuth" : isAuth ?? false,
};
}
Дайте мне знать, если у вас возникнут дополнительные вопросы.