StreamController的Flutter身份验证状态

时间:2020-04-07 17:02:57

标签: node.js authentication flutter dart stream

我正在使用Flutter和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不会重建我的应用程序,也不会带我到LoginPage。

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

如何在我的应用中使用streamController处理我的authState?

0 个答案:

没有答案