Как разместить список объектов в облачной пожарной базе FireBase в флаттере - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть список как

class MyContact {
String userName = "";
List<Phone> phones = List<Phone>();
MyContact({this.userName, this.phones});
}

class Phone {
String phone = "";

Phone({this.phone});
}

и метод обновления

  _updateContact() async {
var contacts = (await ContactsService.getContacts()).toList();
List<MyContact> myContacts = List<MyContact>();
contacts.forEach((contact) {
  var myContact = MyContact();
  myContact.userName = contact.displayName;
  contact.phones.forEach((phone) {
    myContact.phones.add(Phone(phone: phone.value));
  });
  myContacts.add(myContact);
});

await Firestore.instance
    .collection("contacts")
    .document()
    .setData(????);
}

Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 08 ноября 2019

Я решил следующим образом

class MyContact {
  String userName = "";
  List<Phone> phones = List<Phone>();

 MyContact({this.userName, this.phones});

 Map<String, dynamic> toJson() {
 return {
  "name": userName,
  "phones": phones.map((phone) => phone.toJson()).toList(),
};
}
}

class Phone {
String phone = "";

Phone({this.phone});

Map<String, dynamic> toJson() {
return {
  "phone": phone,
};
}
}

Обновление метода

_updateContact() async {
var contacts = (await ContactsService.getContacts()).toList();
List<MyContact> myContacts = List<MyContact>();
contacts.forEach((contact) {
  List<Phone> phones = List<Phone>();
  contact.phones.forEach((phone) {
    phones.add(Phone(phone: phone.value));
  });
  myContacts.add(MyContact(userName: contact.displayName, phones: phones));
});

Map<String, dynamic> map = {
  'contact': myContacts.map((myContact) => myContact.toJson()).toList()
};
await Firestore.instance
    .collection("contacts")
    .document()
    .setData(map);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...