首页 > 解决方案 > 如何将动态地图对象从 Firestore 映射到 Flutter 以及从 Flutter 到 Firestore?

问题描述

我想将 Firestore 上的动态地图对象转换为 Flutter。下面是一个例子:

被阻止用户的地图可以更改。有时,它可能包含 3 个被阻止的用户 在此处输入图像描述 ,有时,它可能包含 2 个。 在此处输入图像描述

以下是我当前的代码:

    class UserModel {
      String userId;
      String bio;
    ///add in dynamic blockedusers mapping
    }
    
    UserModel(
          {
          this.userId,
          this.bio,
    ///add in dynamic blockedusers mapping
    }
    
    UserModel.fromJson(Map<dynamic, dynamic> map) {
        userId = map['userId'];
        bio = map['bio'];
    ///add in dynamic blockedusers mapping
    }
    
     toJson() {
        return {
          "userId": userId,
          'bio': bio,
    ///add in dynamic blockedusers mapping
    };
    }

鉴于地图对象发生变化,有没有办法将其从 Firestore 动态映射到 Flutter 或将其从 Flutter 映射到 Firestore?提前致谢!

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


有几种方法可以做到这一点,最简单的方法是将其作为 Map 存储在UserModel.

或者在飞镖中,您可以通过它们映射创建字符串列表:List blockedUsers = blockedUsersFromDB.keys.toList()

或者,如果有更多信息,请使用静态 listfromjson 创建子模型:

class BlockedUser{
  final String id;
  BlockedUser({this.id});

  factory BlockedUser.fromMap(Map map){
    return BlockedUser(id: map['userId']);
  }

  static List<BlockedUser> listFromJson(Map<dynamic, dynamic> json){
    // adjust to your data set or to use the from map function above
    return json.keys.map((user) => BlockedUser(id: user));
  }

}

推荐阅读