作为地图无法解决:/,firebase,flutter,dart,google-cloud-firestore"/>

首页 > 解决方案 > 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,但我真的很想修复它。

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


情况是我拼错了一个进口,它正在阅读我的旧UserModel:D

UserModel 必须是map<String,dynamic>因为set函数被告知它不能与map<dynamic,dynamic>.

所以上面的代码很好,对我有用。

感谢帮助!


推荐阅读