Выход из приложения Flutter не возвращается на страницу входа - PullRequest
0 голосов
/ 29 апреля 2019

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

Он вышел из Firebase, но страница не вернется на страницу входа, немедленно вызывая выход из системы, если я не нажму кнопку «Назад» на панели приложения.

Это моя функция выхода:

abstract class BaseAuth {
  Future<void> signOut();
}

Future<void> signOut() async {
  return _firebaseAuth.signOut();
}

final BaseAuth auth;
final VoidCallback onSignedOut;

_signOut() async {
  try {
    await widget.auth.signOut();
    widget.onSignedOut();
  } catch (e) {
    print(e);
  }
}

На моей корневой странице есть:

@override
  Widget build(BuildContext context) {
    switch (authStatus) {
      case AuthStatus.NOT_DETERMINED:
        return _buildWaitingScreen();
        break;
      case AuthStatus.NOT_LOGGED_IN:
        return new LoginSignUpPage(
          auth: widget.auth,
          onSignedIn: _onLoggedIn,
        );
        break;
      case AuthStatus.LOGGED_IN:
        if (_userId.length > 0 && _userId != null) {
          return new HomePage(
            userId: _userId,
            auth: widget.auth,
            onSignedOut: _onSignedOut,
          );
        } else return _buildWaitingScreen();
        break;
      default:
        return _buildWaitingScreen();
    }
  }

Таким образом, если статус аутентификации не зарегистрирован, он должен вернуться обратно к LoginSignUpPage.

Я не уверен, почему происходит такая задержка. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 30 апреля 2019

Таким образом, добавление Navigator.popUntil(context, ModalRoute.withName("/")); в качестве последней строки в _signOut() решило проблему.

Он просто выталкивает все экраны, расположенные сверху первого экрана в вашем стеке.

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