Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 错误:参数类型';用户模型?功能(用户?';can';不能分配给参数类型';用户模型函数(用户?';_Flutter_Dart - Fatal编程技术网

Flutter 错误:参数类型';用户模型?功能(用户?';can';不能分配给参数类型';用户模型函数(用户?';

Flutter 错误:参数类型';用户模型?功能(用户?';can';不能分配给参数类型';用户模型函数(用户?';,flutter,dart,Flutter,Dart,我在颤振中得到以下错误 UserModel是一个类 class UserModel { final String uid; UserModel({this.uid}); } 出现这个错误的代码是 Stream<UserModel> get user { return _auth.authStateChanges() .map(_userFromFirebaseUser); } 流获取用户{ 返回_auth.authStateChanges

我在颤振中得到以下错误

UserModel是一个类

class UserModel {
  final String uid;
  UserModel({this.uid});
}
出现这个错误的代码是

  Stream<UserModel> get user {
    return _auth.authStateChanges()
        .map(_userFromFirebaseUser);
  }

流获取用户{
返回_auth.authStateChanges()
.map(_userFromFirebaseUser);
}
完整代码:

class AuthService {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  UserModel? _userFromFirebaseUser(User? user) {
    return user != null ? UserModel(uid: user.uid) : null;
  }

  Stream<UserModel> get user {
    return _auth.authStateChanges()
        .map(_userFromFirebaseUser);
  }


  Future signInAnon() async {
    try {
      UserCredential result = await _auth.signInAnonymously();
      User user = result.user!;
      return _userFromFirebaseUser(user);

    } catch (e) {
      print(e.toString());
      return null;
    }

  }
  Future signInWithEmailAndPassword( String email, String password) async {
    try {
      UserCredential result = await _auth.signInWithEmailAndPassword(email: email, password: password);
      User user = result.user!;
      return _userFromFirebaseUser(user);
    } catch(e){
      print(e.toString());
      return null;
    }
  }

  Future signUpWithEmailAndPassword( String email, String password) async {
    try {
      UserCredential result = await _auth.createUserWithEmailAndPassword(email: email, password: password);
      User user = result.user!;
      return _userFromFirebaseUser(user);
    } catch(e){
      print(e.toString());
      return null;
    }
  }

  Future signOut() async {
    try {
      return await _auth.signOut();
    } catch (e){
      print(e.toString());
      return null;

    }
  }



}
类身份验证服务{
final FirebaseAuth _auth=FirebaseAuth.instance;
UserModel?\u userFromFirebaseUser(用户?用户){
返回用户!=null?UserModel(uid:user.uid):null;
}
流获取用户{
返回_auth.authStateChanges()
.map(_userFromFirebaseUser);
}
异步的{
试一试{
UserCredential结果=等待_auth.signinanoymously();
User=result.User!;
返回_userFromFirebaseUser(用户);
}捕获(e){
打印(如toString());
返回null;
}
}
带email和密码(字符串电子邮件、字符串密码)的未来登录异步{
试一试{
UserCredential result=wait _auth.signin with email and password(email:email,password:password);
User=result.User!;
返回_userFromFirebaseUser(用户);
}捕获(e){
打印(如toString());
返回null;
}
}
将来使用EmailAndPassword(字符串电子邮件、字符串密码)异步注册{
试一试{
UserCredential result=wait_auth.createUserWithEmailAndPassword(电子邮件:电子邮件,密码:密码);
User=result.User!;
返回_userFromFirebaseUser(用户);
}捕获(e){
打印(如toString());
返回null;
}
}
Future signOut()异步{
试一试{
return wait_auth.signOut();
}捕获(e){
打印(如toString());
返回null;
}
}
}

之所以发生这种情况,是因为您的
\u userFromFirebaseUser
定义如下:

UserModel? _userFromFirebaseUser(User? user) {
这意味着您的意思是,您的
\u userFromFirebaseUser
可能返回
UserModel
或可能返回
null

解决此问题的一种方法是使您的
getter
返回
Stream
,而不是
Stream

流获取用户{
返回_auth.authStateChanges()
.map(_userFromFirebaseUser);
}

现在您的
getter
可能会返回一个
UserModel
或者它可能会返回一个
null

您能分享一下
\u userFromFirebaseUser
是什么吗?
Stream<UserModel?> get user {
  return _auth.authStateChanges()
    .map(_userFromFirebaseUser);
}