【问题标题】:flutter firebase fire authentication - error since updateflutter firebase fire authentication - 自更新以来的错误
【发布时间】:2021-08-20 12:14:42
【问题描述】:

由于我更新了 Flutter 和 Android Studio,我收到了一个错误,代码之前运行良好。我做了一些研究,但没有找到正确的解决方案。拜托,你能帮我解决这个问题吗?非常感谢

if (snapshot.connectionState == ConnectionState.done) {
          return StreamBuilder(
            stream: FirebaseAuth.instance.authStateChanges(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.active) {
                User user = snapshot.data; // error A value of type 'Object?' can't be assigned to a variable of type 'User'.
                if (user == null) {
                  return LoginPageTest();

``

【问题讨论】:

  • 你用的是什么 Flutter 和 Android Studio 版本?
  • Flutter 2.2.1 A Studio 4.2.1

标签: firebase flutter firebase-authentication


【解决方案1】:

您应该已激活 null 安全性,因此 User user 被声明为不接受 null,但 snapshot.data 可以为 null,因此不兼容。您可以将用户声明为可为空,添加一个?,如下所示:

User? user = snapshot.data;

【讨论】:

  • 是的。相同的“对象类型的值?”不能分配给“用户”类型的变量?”
  • 嗯,因为data不是User的实例,也许你可以试试这种方式? snapshot.data 作为用户
  • 它有效。错误已消失。非常感谢。
【解决方案2】:

您必须定义StreamBuilder 数据类型。默认情况下它是Object?(具有空安全性)。这是你更新的代码,试试这个

if (snapshot.connectionState == ConnectionState.done) {
          return StreamBuilder<User?>(
            stream: FirebaseAuth.instance.authStateChanges(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.active) {
                User? user = snapshot.data;                    
                if (user == null) {
                  return LoginPageTest();

``

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2022-11-24
    • 2020-05-25
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多