firebase - Firebase/Flutter:编译器读取地图作为地图无法解决:/
问题描述
我正在使用 Firebase 创建身份验证服务,并且我有 UserModel 来处理用户数据,我有一个带有函数的类:
class UserModel extends ChangeNotifier {
late String uid;
late String username;
late String email;
late String password;
late String type;
UserModel.empty();
UserModel(
String uid, String username, String email, String password, String type) {
this.uid = uid;
this.username = username;
this.email = email;
this.password = password;
this.type = type;
}
Map<String, dynamic> toMap(UserModel user) {
var data = Map<String, dynamic>();
data["uid"] = user.uid;
data["nickname"] = user.username;
data["email"] = user.email;
data["password"] = user.password;
data["type"] = user.type;
return data;
}
}
还有一个我有身份验证功能的类:
class AuthenticationService {
final FirebaseAuth _firebaseAuth;
UserModel userModel = UserModel.empty();
final userRef = FirebaseFirestore.instance.collection('users');
AuthenticationService(this._firebaseAuth);
Stream<User?> get authStateChanges => _firebaseAuth.authStateChanges();
Future<void> addUserToDB(
{required String uid,
required String username,
required String email,
required String password,
required String type}) async {
userModel = UserModel(uid, username, email, password, type);
var firebaseUser = FirebaseAuth.instance.currentUser;
await userRef.doc(uid).set(userModel.toMap(userModel));
}
}
我有一个错误:
参数类型“Map<dynamic, dynamic>”不能分配给参数类型“Map<String, dynamic>”。
任何想法如何解决它?
临时我没有使用它UserModel
,但我真的很想修复它。
解决方案
情况是我拼错了一个进口,它正在阅读我的旧UserModel
:D
UserModel 必须是map<String,dynamic>
因为set
函数被告知它不能与map<dynamic,dynamic>
.
所以上面的代码很好,对我有用。
感谢帮助!
推荐阅读
- java - 数据库触发器在集成测试中不起作用
- cython - 将c函数作为参数传递给cython中的python函数
- r - 使用 r (data.table/dplyr) 中的列表列
- react-native - App.js 文件中的导航器问题——React Native
- javascript - PercentPipe 随机添加十进制数
- excel - 将Json导出到xlsx时有什么方法可以设置背景颜色
- c++ - 使用犰狳矩阵作为值序列化 STL unordered_map
- react-native - 避免键盘打开时屏幕被推入状态栏
- java - 通过比较多头来检查 JWT exp 字段
- sql - 红移正则表达式计数。重复操作错误