Не могу разобраться с построением во flutter

Мой код зависает при загрузке, даже когда проверка входа в систему уже прошла и _loading стал ложным. Скажите, пожалуйста, в чем дело?

class _MainPageState extends State<MainPage> with TickerProviderStateMixin {
  @override
  initState() {
    super.initState();
    checkLoginStatus();
  }

  Future checkLoginStatus() async {
    sharedPreferences = await SharedPreferences.getInstance();

    if (sharedPreferences.getString('userModel') != null) {
      _userModel = UserModel.fromBackEnd(
          await json.decode(sharedPreferences.getString('userModel')));
    }

    if (sharedPreferences.getString('token') == null || _userModel == null) {
      Navigator.of(context).pushAndRemoveUntil(
          MaterialPageRoute(builder: (BuildContext context) => LoginPage()),
          (Route<dynamic> route) => false);
    } else {
      _loading = false;
    }
  }

  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light
        .copyWith(statusBarColor: Colors.transparent));
    return Scaffold(
        body: Container(
      color: Colors.black,
      child: loading
                        ? Center(child: GFLoader(loaderColorOne: Colors.red))
                        : ListView(children: <Widget>[
                            profileInfoSection(),
                            SizedBox(height: 15.0),
                            menuSection(),
                            SizedBox(height: 15.0),
                            bottomSection()
                          ])),

Это часть моего кода. _checkLoginStatus проверяет запись токена и модели пользователя, а если таковых нет, бросает ее на авторизацию. Я хотел бы отображать загрузку до тех пор, пока не получу все данные, и только после этого показывать основную область приложения.

Если удалить фрагмент кода

    if (sharedPreferences.getString('userModel') != null) {
      _userModel = UserModel.fromBackEnd(
          await json.decode(sharedPreferences.getString('userModel')));
    }

Значок загрузки исчезает


Ответы (0 шт):