переменная состояния.
я есть приложение, в котором я должен проверить состояние входа в систему при запуске приложения и вызвать соответствующий экран.
Код, используемый для запуска приложения:
class MyApp extends StatefulWidget {
@override
MyAppState createState() {
return new MyAppState();
}
}
class MyAppState extends State<MyApp> {
bool isLoggedIn;
Future<bool> getLoginState() async{
SharedPreferences pf = await SharedPreferences.getInstance();
bool loginState = pf.getBool('loginState');
return loginState;
// return pf.commit();
}
@override
Widget build(BuildContext context) {
getLoginState().then((isAuth){
this.isLoggedIn = isAuth;
});
if(this.isLoggedIn) {return Container(child: Text('Logged In'));}
else {return Container(child: Text('Not Logged In));}
}
}
Я могу спастиSharedPreference
и получить его здесь, проблема в том, что какgetLoginState()
это асинхронная функция,this.isLoggedIn
является нулевым к моменту выполнения условия if. Логическое утверждение не выполняется в операторе if, и приложение вылетает.
Как мне убедиться, что переменная boolisLoggedIn
используется в условии if имеет значение, когда выполняется оператор if?
Любая помощь будет оценена.