小编Art*_*xha的帖子

使用 Flutter Web 刷新后如何维护 Firebase 身份验证?

我正在使用来自 Firebase 的 authStateChanges 流和 flutter。我有两种视图,一种用于移动设备,另一种用于 Web 应用程序。如果用户未连接、登录或通过身份验证,我想将用户重定向到登录屏幕。起初它运行良好,但当我登录并刷新浏览器时,我加载登录屏幕大约 1 秒,然后再次出现 Web 屏幕。我用 print 检查了发生的情况,从我所看到的情况来看,authStateChanges Stream 在 1-2 秒内为空(当登录屏幕出现时),然后当流接收到连接的用户时有一个值。有没有办法检查或等到身份验证完成后再加载登录屏幕(当它不能加载它时)?

我的主要组件包含 StreamBuilder 如下:

  Widget build(BuildContext context) {
    final firebaseAuthService = Provider.of<FirebaseAuthService>(context);
    return StreamBuilder<User>(
        stream: firebaseAuthService.authStateChanges(),
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.active) {
            User user = snapshot.data;
            if (user == null) {
              //first time no connection
              return SignIn();
            }
            if (kIsWeb) {
              return WebMain(user: user);
            }
            // load mobile version
            return MobileMain();
          }
          return Scaffold(
            body: Center(
              child: CircularProgressIndicator(),
            ),
          ); …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-authentication flutter-web flutter-provider

6
推荐指数
1
解决办法
3572
查看次数