【发布时间】:2021-01-11 18:20:47
【问题描述】:
我试图将值放入我的不同模型中,当我使用父模型的 toJson() 函数时,它假设用它们的对象调用其他模型并形成一个我可以发送到 firebase 的 json。
下面是模型
class Customer {
String name;
String avatar;
String customerId;
List<Receivers> receivers;
Customer({this.name = 'my name', this.avatar ='image-link', this.customerId ='123455', this.receivers});
Customer.fromJson(Map<String, dynamic> json) {
name = json['name'];
avatar = json['avatar'];
customerId = json['customerId'];
if (json['receivers'] != null) {
receivers = new List<Receivers>();
json['receivers'].forEach((v) {
receivers.add(new Receivers.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
print('i was called 1');
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['avatar'] = this.avatar;
data['customerId'] = this.customerId;
if (this.receivers != null) {
print('i was called 2');
data['receivers'] = this.receivers.map((v) => v.toJson()).toList();
}
return data;
}
}
class Receivers {
String adddress;
String apartmentNumber;
String apartmentType;
DropoffCoordinates dropoffCoordinates;
String name;
int phoneNumber;
Receivers(
{this.adddress = 'worldwide',
this.apartmentNumber = 'no1',
this.apartmentType = 'flat',
this.dropoffCoordinates,
this.name = 'my name',
this.phoneNumber = 89084884});
Receivers.fromJson(Map<String, dynamic> json) {
adddress = json['adddress'];
apartmentNumber = json['apartmentNumber'];
apartmentType = json['apartmentType'];
dropoffCoordinates = json['dropoffCoordinates'] != null
? new DropoffCoordinates.fromJson(json['dropoffCoordinates'])
: null;
name = json['name'];
phoneNumber = json['phoneNumber'];
}
Map<String, dynamic> toJson() {
print('i was called 2');
final Map<String, dynamic> data = new Map<String, dynamic>();
data['adddress'] = this.adddress;
data['apartmentNumber'] = this.apartmentNumber;
data['apartmentType'] = this.apartmentType;
if (this.dropoffCoordinates != null) {
print('i was called 3');
data['dropoffCoordinates'] = this.dropoffCoordinates.toJson();
}
data['name'] = this.name;
data['phoneNumber'] = this.phoneNumber;
return data;
}
}
class DropoffCoordinates {
double latitude;
double longitude;
DropoffCoordinates({this.latitude = 1.3566, this.longitude = 2.47655});
DropoffCoordinates.fromJson(Map<String, dynamic> json) {
latitude = json['latitude'];
longitude = json['longitude'];
}
Map<String, dynamic> toJson() {
print('i was called 4');
final Map<String, dynamic> data = new Map<String, dynamic>();
data['latitude'] = this.latitude;
data['longitude'] = this.longitude;
return data;
}
}
我硬编码了这些值,只是为了查看被调用的各种 toJson() 函数的结果,但现在的问题是:
嵌套模型没有被调用或显示在 print toJson() 函数的结果中
下面是我从打印结果中得到的值
print('CUSTOMER MODEL: ${customerInstance.toJson()}');
print('RECEIVERS MODEL: ${receiversInstance.toJson()}');
print('DROPOFFPOINTS MODEL: ${dropoffCordinstance.toJson()}');
控制台结果
D/ViewRootImpl@4ab0077[MainActivity](21376): ViewPostIme pointer 0
D/ViewRootImpl@4ab0077[MainActivity](21376): ViewPostIme pointer 1
Reloaded 38 of 1370 libraries in 6,641ms.
I/flutter (21376): i was called 1
I/flutter (21376): CUSTOMER MODEL: {name: my name, avatar: image-link, customerId: 123455}
I/flutter (21376): i was called 2
I/flutter (21376): RECEIVERS MODEL: {adddress: worldwide, apartmentNumber: no1, apartmentType: flat, name: my name, phoneNumber: 89084884}
I/flutter (21376): i was called 4
I/flutter (21376): DROPOFFPOINTS MODEL: {latitude: 1.3566, longitude: 2.47655}
请帮忙,我只需要从嵌套模型获取值到客户模型,所以我可以使用它的 toJson() 函数以地图形式发送到 Firestore。
谢谢
【问题讨论】: