Flutter集成FirebaseAuth报错:类型'Function'未定义'map'方法求助
问题原因
_auth.authStateChanges是Firebase Auth提供的返回Stream的方法,你当前没有加方法调用的括号(),拿到的是Function类型本身,而不是它返回的Stream对象,所以调用map方法才会抛出类型不匹配的错误。- 额外存在类型兼容问题:你定义的
_userFromFirebaseUser返回的是可空类型models.User?,但是你声明的usergetter返回的是不可空的Stream<models.User>,同时authStateChanges输出的元素本身就是可空的User?类型,需要同步修正类型匹配。
修正后代码
import 'package:pwff/models/user.dart' as models; import 'package:firebase_auth/firebase_auth.dart'; class AuthService { final FirebaseAuth _auth = FirebaseAuth.instance; models.User? _userFromFirebaseUser(User? user) { return user != null ? models.User(uid: user.uid) : null; } Stream<models.User?> get user { // 加()调用方法获取Stream对象,同时修改返回值类型匹配转换逻辑的输出 return _auth.authStateChanges() .map(_userFromFirebaseUser); } }
可选优化方案
如果你的业务逻辑只需要监听登录状态下的用户信息,也可以过滤空值后返回不可空的Stream:
Stream<models.User> get user { return _auth.authStateChanges() .where((user) => user != null) .map((user) => models.User(uid: user!.uid)); }
内容的提问来源于stack exchange,提问作者Destroyer00000
相关产品推荐
相关产品推荐

