【问题标题】:Firebase in flutter getCurrentUser never unwraps the Future and I can't get at the DataFlutter getCurrentUser中的Firebase永远不会打开Future,我无法获取数据
【发布时间】:2020-07-17 23:06:25
【问题描述】:

所以我有一个带有 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 令牌。谢谢。

【问题讨论】:

  • 您确定用户已登录您的调试设备吗?
  • 相当肯定,但我不知道如何判断,因为它一直有错误,所以我无法检查它是否真的找到了。

标签: firebase flutter dart firebase-authentication


【解决方案1】:

尝试将您的代码从 snapshot.hasData 更改为 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();
         }
        },
      );

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2023-04-10
    • 2022-09-23
    相关资源
    最近更新 更多