Я решил следующим образом
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);
}