参数类型'MyUser? Function(User)'不能分配给参数类型"我的用户函数(用户?)"。颤振火碱应用构建问题



关于flutter firebase应用程序构建。流函数有一条红线。当前使用auth.dart和user.dart两个文件

我的代码auth.dart文件:

import 'package:coffee_dan/models/user.dart';
import 'package:firebase_auth/firebase_auth.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
MyUser Function(User? event)? get userFromFirebaseUser => null;
MyUser? _userFromFirebaseUser(User user) {
// ignore: unnecessary_null_comparison
return user!= null ? MyUser(uid: user.uid) : null;
}
Stream<MyUser> get user {
return _auth.authStateChanges().map(_userFromFirebaseUser);  Red Line in here **_userFromFirebaseUser**
}
Future signInAnon() async {
try {
UserCredential result = await _auth.signInAnonymously();
User? user = result.user;
return _userFromFirebaseUser(user!);
} catch (e) {
print(e.toString());
return null;
}
}
}

user.dart文件:

class MyUser {
final String uid;
MyUser({required this.uid});
}

此处为初始代码此处更新代码

代码中有两件事需要更改:

  1. 您的_userFromFirebaseUser签名需要接收一个可为null的User,然后您就可以删除您的";忽略";评论行。它应该如下所示:

    MyUser? _userFromFirebaseUser(User? user) {
    return user != null ? MyUser(uid: user.uid) : null;
    }
    
  2. 您的用户getter应该返回Stream<MyUser>这将消除错误。这个应该看起来如下:

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

完整代码(保留您的导入(:

class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
MyUser Function(User? event)? get userFromFirebaseUser => null;
MyUser? _userFromFirebaseUser(User? user) {
return user!= null ? MyUser(uid: user.uid) : null;
}
Stream<MyUser?> 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;
}
}
}

最新更新