参数类型“用户?”不能分配给参数类型“用户”

时间:2021-07-07 19:37:26

标签: firebase flutter android-studio

我正在编写此代码是为了学习 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
}

3 个答案:

答案 0 :(得分:0)

该错误是由 Null 安全引起的。

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

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

答案 1 :(得分:0)

您的项目以零安全性运行。我猜 Udemy 课程还没有使用 Flutter 的这个功能。由于 Flutter 2.2 声音空值安全在新项目中默认启用。您应该查看此页面:https://dart.dev/null-safety

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

答案 2 :(得分:0)

需要通过 UserCredential 对象中的 user 参数检查 onSignIn 函数的 user 参数的类类型。

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

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