Android 类型为'的值;溪流<;用户?>';can';无法从函数返回';用户';因为它的返回类型为';溪流<;用户>';飘飘然
我试图实现一个getter,但它在下面代码段的最后一行显示了这个错误 代码是-Android 类型为'的值;溪流<;用户?>';can';无法从函数返回';用户';因为它的返回类型为';溪流<;用户>';飘飘然,android,ios,firebase,flutter,dart,Android,Ios,Firebase,Flutter,Dart,我试图实现一个getter,但它在下面代码段的最后一行显示了这个错误 代码是- class AuthRepository extends BaseAuthRepository { final FirebaseFirestore _firebaseFirestore; final auth.FirebaseAuth _firebaseAuth; AuthRepository({ FirebaseFirestore? firebaseFirestore, auth.F
class AuthRepository extends BaseAuthRepository {
final FirebaseFirestore _firebaseFirestore;
final auth.FirebaseAuth _firebaseAuth;
AuthRepository({
FirebaseFirestore? firebaseFirestore,
auth.FirebaseAuth? firebaseAuth,
}) : _firebaseFirestore = firebaseFirestore ?? FirebaseFirestore.instance,
_firebaseAuth = firebaseAuth ?? auth.FirebaseAuth.instance;
@override
// TODO: implement user
Stream<auth.User> get user => _firebaseAuth.userChanges();
class AuthRepository扩展了BaseAuthRepository{
最终FirebaseFirestore\u FirebaseFirestore;
final auth.FirebaseAuth\u FirebaseAuth;
AuthRepository({
FirebaseFirestore?FirebaseFirestore,
auth.FirebaseAuth?FirebaseAuth,
}):_firebaseFirestore=firebaseFirestore??firebaseFirestore.instance,
_firebaseAuth=firebaseAuth??auth.firebaseAuth.instance;
@凌驾
//TODO:实现用户
Stream get user=>\u firebaseAuth.userChanges();
更改
Stream<auth.User> get user => _firebaseAuth.userChanges();
Stream get user=>\u firebaseAuth.userChanges();
到
Stream get user=>\u firebaseAuth.userChanges()!;
如图所示
该方法返回一个Stream对象,这意味着它可能为null
因为您不能确定返回的类型的内容,所以可以检查它是否为null,而不是返回它
即
class AuthRepository扩展了BaseAuthRepository{
最终FirebaseFirestore\u FirebaseFirestore;
final auth.FirebaseAuth\u FirebaseAuth;
AuthRepository({
FirebaseFirestore?FirebaseFirestore,
auth.FirebaseAuth?FirebaseAuth,
}):_firebaseFirestore=firebaseFirestore??firebaseFirestore.instance,
_firebaseAuth=firebaseAuth??auth.firebaseAuth.instance;
@凌驾
//TODO:实现用户
流获取用户=>
val userChanges=_firebaseAuth.userChanges();
if(userChanges!=null)返回userChanges
否则//
试试这个
Stream<auth.User?> get user => auth.userChanges();
Stream get user=>auth.userChanges();
\u firebaseAuth.userChanges()
返回可为空的用户
,因此您需要通过在auth.User
之后添加?
更新返回类型,使其可为空,如下所示:
Stream get user=>\u firebaseAuth.userChanges();
bro.No.它不起作用了。它再次出现了相同的错误。在您的代码段中,return userChanges也出现了相同的错误。实际上,我尝试过,但在您提到的行中的“user”上出现了此错误。这是错误-AuthRepository.user'(“Stream Function()”)不是对“BaseAuthRepository.user”(“Stream Function()”)的有效重写。您需要在BaseAuthRepository
中进行相同的更改。请阅读迁移到空安全性的指南:我真的忘记了。我进行了更改,问题得到了解决。不,不是在“用户”上工作,它显示了此错误-“AuthRepository.user”(“Stream Function()”)不是对“BaseAuthRepository.user”的有效重写('Stream Function()')。您的扩展类BaseAuthRepository
可能有问题,行上的bcs是空安全的完美之选是的,是的。我真的忘了。多亏了您兄弟。
class AuthRepository extends BaseAuthRepository {
final FirebaseFirestore _firebaseFirestore;
final auth.FirebaseAuth _firebaseAuth;
AuthRepository({
FirebaseFirestore? firebaseFirestore,
auth.FirebaseAuth? firebaseAuth,
}) : _firebaseFirestore = firebaseFirestore ?? FirebaseFirestore.instance,
_firebaseAuth = firebaseAuth ?? auth.FirebaseAuth.instance;
@override
// TODO: implement user
Stream<auth.User> get user =>
val userChanges = _firebaseAuth.userChanges();
if (userChanges != null) return userChanges
else //your logic
Stream<auth.User?> get user => auth.userChanges();