построить класс модели для отображения в / из пожарного магазина - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь создать классы, соответствующие схеме моего пожарного депо. Моя схема в firestore:

docID
------------>↓location                             //Map
                 ↓country                          //Map
                     name: "Ireland"
                     code: "IRE"
                 ↓suburb                           //Map
                     name: "Cork"
                     code: "crk"
                 ↓postcode                        //Map
                     name: "4"
                     code: "4"

Я немного запутался, как смоделировать выше. Это то, что я сделал до сих пор ..

class VoterData {
  VoterData({this.location});

  final Location location;

  Map<String, dynamic> toMap() {
    return {
      'location': location,
    };
  }

  factory VoterData.fromMap(Map<String, dynamic> map) {
    return VoterData(location: map['location']);
  }
}

class Location {
  final Suburb suburb;
  final Postcode postcode;
  final Country country;

  Location({this.suburb, this.country, this.postcode});

  factory Location.fromJson(Map<String, dynamic> json) => Location(
        suburb: json['suburb'],
        postcode: json['postcode'],
        country: json['country'],
      );
  Map<String, dynamic> toJson() => {
        "suburb": suburb,
        "postcode": postcode,
        "country": country,
      };
}

class Suburb {
  String code;
  String name;

  Suburb({
    this.code,
    this.name,
  });

  factory Suburb.fromJson(Map<String, dynamic> json) => Suburb(
        code: json["code"],
        name: json["name"],
      );

  Map<String, dynamic> toJson() => {
        "code": code,
        "name": name,
      };
}

class Postcode {
  String code;
  String name;

  Postcode({
    this.code,
    this.name,
  });

  factory Postcode.fromJson(Map<String, dynamic> json) => Postcode(
        code: json["code"],
        name: json["name"],
      );

  Map<String, dynamic> toJson() => {
        "code": code,
        "name": name,
      };
}

class Country {
  String code;
  String name;

  Country({
    this.code,
    this.name,
  });

  factory Country.fromJson(Map<String, dynamic> json) => Country(
        code: json["code"],
        name: json["name"],
      );

  Map<String, dynamic> toJson() => {
        "code": code,
        "name": name,
      };
}

Я буду искать данные моего хранилища, которые будут строго типизированы для моей объектной модели. Предположим, мне нужно написать пригородный объект в пожарном депо. Как бы я разработал свой класс модели ..?

1 Ответ

0 голосов
/ 24 апреля 2020

Привет, я рекомендую вам использовать этот класс

   class DocumentModel {
      String collection;
      String documentID;
      Map<String, dynamic> data;
      DataBaseModel(this.collection);
    }

class VoterModel extends DocumentModel {
  Map<String, dynamic> data = {
    'country': { 'name':'', 'code':''},
    'suburb': { 'name':'', 'code':'' },
    'postcode' : { 'name':'', 'code':'' }
  }
  VoterModel() : super('<COLLECTION NAME>');
}

, поэтому, когда вы получаете QuerySnapshot, вы можете анализировать вот так

List<VoterModel> list = querySnapshot.documents.map((DocumentSnapshot docSnapshot) {
        VoterModel voter = new VoterModel();
        voter.documentID = docSnapshot.documentID;
        voter.data = docSnapshot.data;
        return voter;
      }).toList();

Доступ к данным

list.last.data['country']['name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...