получить доступ к вложенному классу в методе - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать метод, который принимает объект типа Suburb и записывает его строго типизированным в firestore. Объект глубоко вложен в мою модель данных. Вот моя модель данных, созданная с помощью генератора сериализатора json.

import 'package:json_annotation/json_annotation.dart';
part 'voter_data.g.dart';

@JsonSerializable(explicitToJson: true)
class VoterData {
  VoterData({this.voterId,this.screenState, this.location});
   @JsonKey(name: 'voter_id')
  final String voterId;
  final int screenState;

  final Location location;

  factory VoterData.fromJson(Map<String, dynamic> json) =>
      _$VoterDataFromJson(json);
  Map<String, dynamic> toJson() => _$VoterDataToJson(this);
}
@JsonSerializable()
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) =>
      _$LocationFromJson(json);
  Map<String, dynamic> toJson() => _$LocationToJson(this);
}
@JsonSerializable()
class Suburb {
  String code;
  String name;

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

 factory Suburb.fromJson(Map<String, dynamic> json) =>
      _$SuburbFromJson(json);
  Map<String, dynamic> toJson() => _$SuburbToJson(this);
}
@JsonSerializable()
class Postcode {
  String code;
  String name;

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

  factory Postcode.fromJson(Map<String, dynamic> json) =>
      _$PostcodeFromJson(json);
  Map<String, dynamic> toJson() => _$PostcodeToJson(this);


}
@JsonSerializable()
class Country {
  String code;
  String name;

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

  factory Country.fromJson(Map<String, dynamic> json) =>
      _$CountryFromJson(json);
  Map<String, dynamic> toJson() => _$CountryToJson(this);

}

И вот метод:

setSuburb(Suburb suburb)async{
  VoterData voterData= VoterData();
    final path = '/voters/$uid/';
    final documentReference = Firestore.instance.document(path);
     await documentReference.setData(voterData.location.suburb.toJson(), merge: true);
}

Это не будет работать, потому что пригород в параметрах метода не совпадает с пригородом в методе setData. Какой лучший способ написать метод? (В коде вызов API возвращает пригород, который я хотел бы вставить в метод и сохранить в firestore).

Как это должно выглядеть в firestore:

how it should look. in firestore

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...