I have this model for a map of maps in Firebase.
class Names {
UserInformationModelMap names;
Names({
required this.names,
});
Map<String, dynamic> toMap() {
return <String, dynamic>{
'names': names.toMap(),
};
}
factory Names.fromMap(Map<String, dynamic> map) {
return Names(
names: UserInformationModelMap.fromMap(
map['names'] as Map<String, dynamic>,
),
);
}
factory Names.fromSnapshot(DocumentSnapshot<Map<String, dynamic>> doc) {
return Names(
names: UserInformationModelMap.fromSnapshot(
doc,
),
);
}
}'
class UserInformationModelMap {
WholeNameMap fullName;
String? uid;
UserInformationModelMap({
required this.fullName,
this.uid,
});
Map<String, dynamic> toMap() {
return <String, dynamic>{
uid!: fullName.toMap(),
};
}
factory UserInformationModelMap.fromMap(Map<String, dynamic> map) {
return UserInformationModelMap(
fullName: WholeNameMap.fromMap(map['fullName'] as Map<String, dynamic>),
);
}
factory UserInformationModelMap.fromSnapshot(
DocumentSnapshot<Map<String, dynamic>> doc) {
return UserInformationModelMap(
fullName: WholeNameMap.fromMap(doc['fullName'] as Map<String, dynamic>),
);
}
}
class WholeNameMap {
String firstName;
String lastName;
WholeNameMap({
required this.firstName,
required this.lastName,
});
Map<String, dynamic> toMap() {
return <String, dynamic>{
'firstName': firstName,
'lastName': lastName,
};
}
factory WholeNameMap.fromMap(Map<String, dynamic> map) {
return WholeNameMap(
firstName: map['firstName'] as String,
lastName: map['lastName'] as String,
);
}
}
This enables me to upload information into Firebase which is a map of maps. You can refer to the image to see how it looks like.
Here’s how it looks like on Firebase.
Now, what I wanted to achieve is to query the data from the Firebase and show in on my application using a ListViewBuilder.
Can anyone help me fix my model? Specifically fromSnapshot since that is where the querying happens.
Here’s what I get when querying.
Many thanks!