Флаттер перемещается на экран без задержки - PullRequest
0 голосов
/ 31 октября 2018

У меня есть экран входа в систему, в кнопке формы я делаю проверку, а затем вызываю 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()));
      }
    });
  }

1 Ответ

0 голосов
/ 31 октября 2018

Не устанавливайте экран входа в систему в качестве домашнего экрана на вашем 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()));
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...