objectToMap method
Implementation
Map<String, dynamic> objectToMap(Type cls, dynamic object) {
final om = reflect(object);
final cm = reflectClass(cls);
final map = <String, dynamic>{};
cm.instanceMembers.forEach((Symbol key, MethodMirror value) {
if (value.isSynthetic && value.isGetter) {
final mapKey = nameUnderLine(symbolToName(key));
if ([int, double, bool, String]
.contains(value.returnType.reflectedType)) {
map[mapKey] = om.getField(key).reflectee;
} else {
if (value.returnType.reflectedType.toString().startsWith('Map')) {
map[mapKey] = om.getField(key).reflectee;
} else {
if (value.returnType.reflectedType.toString().startsWith('List')) {
final list = om.getField(key).reflectee;
final subcm = value.returnType.typeArguments.first;
final listIns = [];
(list as List).forEach((subObj) {
listIns.add(objectToMap(subcm.reflectedType, subObj));
});
map[mapKey] = listIns;
} else {
final subObj = om.getField(key).reflectee;
final subMap =
objectToMap(value.returnType.reflectedType, subObj);
map[mapKey] = subMap;
}
}
}
}
});
return map;
}