我正在尝试实现一个 getter,但它在下面代码片段的最后一行向我显示了这个错误。
代码是-
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();
答案 0 :(得分:2)
试试这个
Stream<auth.User?> get user => auth.userChanges();
答案 1 :(得分:1)
改变
Stream<auth.User> get user => _firebaseAuth.userChanges();
到
Stream<auth.User> get user => _firebaseAuth.userChanges()!;
答案 2 :(得分:1)
从 documentation 中可以看出,
该方法返回一个Stream
由于不能确定返回的类型的内容,所以不返回,可以检查是否为null。
I.E.
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
答案 3 :(得分:1)
_firebaseAuth.userChanges()
返回可以为空的 User?
,因此您需要通过在 ?
之后添加 auth.User
来更新您的返回类型为可以为空,如下所示:
Stream<auth.User?> get user => _firebaseAuth.userChanges();
答案 4 :(得分:0)
这对我有用:
Stream<auth.User?> get user => _firebaseAuth.userChanges();
当用户的凭据链接或取消链接时,以及用户的个人资料更新时,它会发送事件。此 Stream 的目标是监听用户状态(登录、退出、不同用户和令牌刷新)的实时更改,而无需手动执行重新加载,然后将更改返回到您的应用程序。
查看 documentation 了解更多信息。