Состояние аутентификации флаттера с StreamController - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю с флаттером и Node, чтобы создать небольшое приложение.

Я пытаюсь обработать состояние аутентификации в моем приложении с помощью streamController. Мой builderPage проверит состояние приложения и вернет loginPage или menuPage:

    class BuilderPage extends StatelessWidget {
  // ignore: close_sinks
  final StreamController<AuthenticationState> _streamController = StreamController<AuthenticationState>();

  Widget buildUi(BuildContext context, AuthenticationState s) {
    print(s.authenticated);
    if (s.authenticated) {
      return MenuPage(_streamController);
    } else {
      return LoginPage(_streamController);
    }
  }

  @override
  Widget build(BuildContext context) {
    return  StreamBuilder<AuthenticationState>(
        stream: _streamController.stream,
        initialData: AuthenticationState.initial(),
        builder: (BuildContext context,
            AsyncSnapshot<AuthenticationState> snapshot) {
          final state = snapshot.data;
          return buildUi(context, state);
        });
  }
}

Когда я аутентифицируюсь в приложении, мой authState становится "true". это работает, я иду на страницу меню, но моя проблема становится, когда я пытаюсь отключиться от приложения. Мой streamController не будет перестраивать мое приложение и переместит меня на страницу входа.

  signOut() {
     _streamController.add(AuthenticationState.signedOut());
  }

Как обработать мой authState с помощью streamController в моем приложении?

...