Firebase Auth не сохраняет текущего пользователя - PullRequest
0 голосов
/ 07 мая 2020

В моем приложении я пытаюсь выполнить простую операцию входа в систему / регистрации.

У меня есть StreamBuilder, которое возвращает экран входа в систему, если пользователя нет, и домашний экран, если пользователь вошел в систему:

StreamBuilder(
          stream: FirebaseAuth.instance.onAuthStateChanged,
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            Widget widget;
            switch (snapshot.data) {
              case (null):
                widget = SignIn();
                break;
              default:
                widget = Home();
            }

            return AnimatedSwitcher(
          child: widget,
          duration: Duration(seconds: 1),
          transitionBuilder: (Widget child, Animation<double> animation) {
            return ScaleTransition(child: child, scale: animation);
          },
        );
          }),

Код отлично работает, как показано ниже:

Simple Login

Но когда пользователь уже вошел в систему, и я закрываю и снова открываю приложение, страница входа в систему ненадолго отображается перед перенаправлением на домашнюю страницу.

То же самое происходит, когда я нажимаю на горячий перезапуск:

Hot Restart

На изображении выше я уже вошел в систему, затем я нажал «горячую перезагрузку», и перед тем, как я был перенаправлен на главный экран, ненадолго отобразился экран входа в систему.

То же самое происходит, когда inte rnet выключен, и анимированного переключателя нет.

Как исправить эту проблему?

1 Ответ

1 голос
/ 07 мая 2020

используйте ConnectionState:

if (snapshot.connectionState == ConnectionState.waiting) {
 return Container();
}

Вы можете заменить контейнер на SplashScreen / загрузочный экран

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...