Как отобразить динамический объект карты из Firestore во Flutter и из Flutter в Firestore?

# #firebase #flutter #dart #google-cloud-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?
Заранее спасибо!

Комментарии:

1. Привет, Скотт. Вы, вероятно, используете его, но, чтобы быть уверенным, я спрошу. Используете ли вы библиотеки cloud_firestore и firebase_core в качестве зависимостей для импорта и экспорта из/в flutter?

Ответ №1:

Есть несколько способов сделать это, самый простой-просто сохранить его в виде карты на UserModel .

Или в dart вы можете отобразить через них создание списка строк: List blockedUsers = blockedUsersFromDB.keys.toList() .

Или, если есть дополнительная информация, создайте подмодель со статическим списком из json:

 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));
  }

}