【问题标题】:The argument type 'User?' can't be assigned to the parameter type 'Future<Object?>?'参数类型“用户?”不能分配给参数类型'Future<Object?>?'
【发布时间】:2021-08-27 16:16:25
【问题描述】:

参考最近关于FirebaseUserUser 的更改。 FirebaseAuth.instance.currentUser() 根本找不到(通过错误 "The expression doesn't evaluate to a function, so can't be invoked."
然而,解决方案是简单地删除括号为FirebaseAuth.instance.currentUser。但现在我们有另一个错误,它不是未来的类型,即“参数类型User不能分配给参数类型Future&lt;Object?&gt;?”。

以下是我的代码块。

return FutureBuilder(
            future: FirebaseAuth.instance.currentUser,
            builder: (ctx, futureSnapshot) => ListView.builder(
              reverse: true, //  So that 1st message goes to last.
              itemCount: chatDocument.length,
              itemBuilder: (ctx, index) => MessageBubble(
                message: chatDocument[index]['text'],
                isMe: chatDocument[index]['userId'],
              ),
            ),
          );

在上面的代码块中,我打算为我的 `FutureBuilder` 提供未来。总之,之前 `FirebaseUser` 对象确实返回了一个未来,但可能 `User` 不再返回了。我该如何处理这种情况?
提前致谢。

【问题讨论】:

  • 你必须删除 FutureBuilder ,并使用 FirebaseAuth.instance.currentUser syimply 因为它不是未来
  • 是的。这样可行。谢谢。

标签: firebase flutter dart firebase-authentication flutter-futurebuilder


【解决方案1】:

我通常不会对 FutureBuilder 进行此操作。一旦你有了一个用户,你就不需要异步它了。

final FirebaseAuth_auth = FirebaseAuth.instance();    
final User? user;
user = _auth.currentUser;

然后,如果 user != null ....create your ListView else, return a CircularProgressIndicator 或其他。

在 Net Ninja 上查找一些不错的视频,让您自己设置好所有这些,只需为您的项目提供一个基于 userChanges() 的流。更强大的设置。

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2022-01-11
    • 2021-01-05
    • 1970-01-01
    • 2021-10-16
    • 2021-10-10
    • 2021-06-08
    • 2020-12-03
    • 2021-04-07
    相关资源
    最近更新 更多