【问题标题】:The argument type 'User?' can't be assigned to the parameter type 'User'参数类型“用户?”不能分配给参数类型“用户”
【发布时间】:2021-09-18 08:37:15
【问题描述】:

我编写这段代码是为了向 Udemy 学习一门 Flutter 课程。 我已经下载了这门课程,这就是我无法从那里获得帮助的原因。 我正在尝试实现 firebase 身份验证,并且我已经完成了课程中给出的相同步骤,但不幸的是,我收到了这个错误。

class SignIn extends StatelessWidget {
  const SignIn({Key? key, required this.onSignIn}) : super(key: key);
  final void Function(User) onSignIn;
  Future<void> _signInAnonymously() async {


    try {
      final anonymously = await FirebaseAuth.instance.signInAnonymously();
      onSignIn(UserCredential.user); // the error is in this parameter
    } on Exception catch (e) {
      print(e.toString());
    }
  }
// There is more code too but the issue is in this one
}

【问题讨论】:

  • 请添加出现的错误。
  • 错误在标题中,但 Yassin 是对的。它也应该放在问题的某个地方。

标签: firebase flutter android-studio


【解决方案1】:

您的项目以可靠的 null 安全性运行。我猜 Udemy 课程还没有使用 Flutter 的这个特性。由于 Flutter 2.2 sound null 安全在新项目中默认启用。你应该检查这个页面:https://dart.dev/null-safety

您可以通过在可能为 null 的字段后面添加一个感叹号来解决您的问题,如下所示:onSignIn(UserCredential.user!);

【讨论】:

  • 没错。我已经尝试过了,现在我不再收到此错误了。
【解决方案2】:

错误是由 Null 安全引起的。

此功能最近已包含在 Flutter 中,因此您所学习的课程可能是指没有 Null 安全性的旧版本。

您可以在此处阅读文档:https://flutter.dev/docs/null-safety

【讨论】:

    【解决方案3】:

    你需要用UserCredential对象中的用户参数检查onSignIn函数的用户参数的类类型。

    为了更清晰,您可以包含完整的代码。

    或者只是这个文件的导入语句

    【讨论】:

      【解决方案4】:

      onSignIn(UserCredential.user!); //只需添加'!'用户完成后,此错误是由于空安全性引起的,我认为您正在遵循旧课程

      【讨论】:

      • 请编辑您的答案,并附上带有专业格式代码的详细说明。
      猜你喜欢
      • 2021-08-27
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2021-06-17
      相关资源
      最近更新 更多