'User'不能分配给FutureBuilder中的参数类型'Future<User>'

我正在尝试确定用户是否使用 FirebaseAuth.instance.currentUser 登录(Flutter Firebase),然后返回 LoginScreen 或 Dashboard,但出现错误。我试图根据 FirebaseFlutter 的说明编写代码,但那些似乎已被弃用......

  Widget build(BuildContext context) {
    return FutureBuilder<User>(
        future: FirebaseAuth.instance.currentUser,
        builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
          if (snapshot.hasData) {
            User user = snapshot.data;
            /// is because there is user already logged
            return Dashboard();
          }

          /// other way there is no user logged.
          return LoginScreen();
        });
  }

我在future: ...代表The argument type 'User' can't be assigned to the parameter type 'Future<User>'. 请有人向我解释我应该怎么做,我做错了什么?我试图在函数中传递它,()=>但它仍然不起作用......目前使用 firebase_auth: 0.20 和 firebase_core 0.7

回答

这是因为FirebaseAuth.instance.currentUserreturnUserFutureBuilderexpect future,要解决此问题,您有两个选择:

  • 使用以下语法 : future: Future.value(FirebaseAuth.instance.currentUser),,这将转换User为 ```Future
  • 检查是否FirebaseAuth.instance.currentUsernull并返回方便的小部件。

以上是'User'不能分配给FutureBuilder中的参数类型'Future&lt;User&gt;'的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>