Flutter:飞镖迁移后出现新错误,安全无效



在运行dart-migrate后,我遇到了很多错误,我相信其中大部分已经修复,但最后一个对我来说没有意义。

Stream<UserData> get user{
return _auth.authStateChanges()
.asyncMap(_userFromFireBaseUser as FutureOr<UserData> Function(User?));
}

有问题的部分是.asyncMap。。。部分";CCD_ 2";是由飞镖迁移添加的。

我得到的错误是

错误:未定义的类"FutureOr"。(undefined_class(和错误:参数类型"dynamic Function(User?("无法分配给参数类型"FutureOr Function(User?("。

发布其余代码时,它也用于身份验证。

class AuthService extends ChangeNotifier
{
// UserData _currentUser = AuthService();
String? _uid;
String? _email;
String? get getUid => _uid;
String? get getEmail => _email;

final FirebaseAuth _auth = FirebaseAuth.instance;
//Create user ojb based on firebaseuser
UserData? _userFromFireBaseUser(User? user) {
return user != null ? UserData(uid: user.uid) : null;
}

Stream<UserData> get user{
return _auth.authStateChanges()
.asyncMap(_userFromFireBaseUser as FutureOr<UserData> Function(User?));
}
//Get UID
Future getCurrentUID() async
{
final currentUid = await _auth.currentUser!.uid;
return currentUid;
}
//Sign in(anon)
Future signInAnon() async
{
try
{
UserCredential result =  await _auth.signInAnonymously();
User? user = result.user;
return _userFromFireBaseUser(user);
}
catch(e) {
print(e.toString());
return null;
}
}

错误的原因是什么?

您可以简单地删除类型转换为FutureOr<UserData> Function(User?),因为_userFromFireBaseUser已经是获取User?并返回UserData?的函数。为了避免从流中返回空值,只需使用where对其进行过滤。使用此代码:

Stream<UserData> get user {
return _auth.authStateChanges()
.asyncMap(_userFromFireBaseUser)
.where((user) => user != null)
.map((user) => user!);
}

最新更新