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

时间:2021-07-05 16:23:27

标签: flutter dart

我一直在编写一种搜索用户的方法。分析器显示参数类型“User?Function(User)”不能分配给参数类型“User?Function(User?)”。

这个错误是什么意思?请告诉我这段代码有什么问题?

  Stream<User?> get currentUser {
    return _firebaseAuth.authStateChanges().map((User user){
      return user != null ? User.fromFirebase(user, 0) : null;
    });
  }

1 个答案:

答案 0 :(得分:0)

此处的 .map 方法要求您传递一个函数,该函数的参数为​​可空用户 (User?),并返回可空用户。但是您已将该参数定义为不可为空的用户。将 ? 添加到您的参数类型以使其可以为空。

  Stream<User?> get currentUser {
    return _firebaseAuth.authStateChanges().map((User? user){
      return user != null ? User.fromFirebase(user, 0) : null;
    });
  }

更新

我使用了 CLASS User,同时使用了 Firebase 的 OBJECT User。这导致了混淆,因为我对两个完全不同的结构使用了相同的名称。

Stream<Client?> get currentUser {
   return _firebaseAuth
      .authStateChanges()
      .map((User? user) => 
       user != null ? Client.fromFirebase(user) : null);
 }