首页 > 解决方案 > Flutter getCurrentUser中的Firebase永远不会打开Future,我无法获取数据

问题描述

所以我有一个带有 Firebase 身份验证的 Flutter 应用程序。我有一个用于登录和注册的 dart 文件,然后是一个带有不同小部件的单独 dart 文件,用于数据列表。我想获取当前用户,以便从数据库中获取该用户的个性化数据。但由于某种原因,我永远无法获得该用户。这是代码:

Future getUser() async {
     final FirebaseUser user = await FirebaseAuth.instance.currentUser();

     return user.getIdToken();
  }
     return FutureBuilder(
        future: getUser(),
        builder: (context, snapshot) {
          if (snapshot.hasData) return Text(snapshot.data);
          else if (snapshot.hasError) return Text("data error (see futurebuilder)");
          return Text("Await for data");
        },
      );

但是在我的调试设备上,文本输出只是说数据错误(请参阅未来的构建器),这是我写的错误消息。但是我无法弄清楚我做错了什么。我不明白为什么这不仅仅是给我用户 ID 令牌。谢谢。

标签: firebaseflutterdartfirebase-authentication

解决方案


尝试将您的代码从snapshot.hasDatato更改为snapshot.connectionState == ConnectionState.done,看看这是否对您有帮助。我的应用程序中有完全相同的设置,这对我有用。

像这样的东西应该工作

FutureBuilder(
        future: getUser(),
        builder: (context, snapshot) {
         if(snapshot.connectionState == ConnectionState.done){
           return
           //Execute code after future is returned 
         } else {
           return CircularProgressIndicator();
         }
        },
      );

推荐阅读