Flutter类型不匹配错误:Bro? Function(Bro?)无法赋值给Bro? Function(User?)
解决Flutter Firebase Auth authStateChanges流map方法类型不匹配错误
错误根源
authStateChanges()流发射的是Firebase官方的User?类型对象,但你的_userfromFirebaseUser函数参数被定义为Bro?,同时代码中存在将User强制转换为Bro的错误操作,导致类型不兼容,触发参数类型不匹配报错。
修复步骤
修正函数参数类型
把_userfromFirebaseUser的参数类型从Bro?改为User?,匹配流的输出类型:// 错误写法 Bro? _userfromFirebaseUser(Bro? user) { return user as Bro; // 强制转换错误 } // 正确写法 Bro? _userfromFirebaseUser(User? user) { if (user == null) return null; // 基于User对象的属性构建Bro实例 return Bro( uid: user.uid, email: user.email, displayName: user.displayName, // 补充其他需要的属性 ); }移除不当强制转换
不要直接将User强制转为Bro(两个类无继承/实现关系,强制转换会导致运行时崩溃),通过User的公开属性(如uid、email等)来实例化自定义的Bro类。正常调用map方法
参数类型匹配后,即可正常使用map转换流:Stream<Bro?> get user { return FirebaseAuth.instance.authStateChanges() .map(_userfromFirebaseUser); }
内容的提问来源于stack exchange,提问作者Robert Balinda
相关产品推荐
相关产品推荐

