getFields method
Implementation
Map<String, String?> getFields(
{List<String>? fields, List<String>? ignoreFields}) {
var fieldsElementsMap =
getFieldsElementsMap(fields: fields, ignoreFields: ignoreFields);
var entries = fieldsElementsMap.entries.toList();
var entriesUIComponents = Map.fromEntries(
entries.map((e) => MapEntry(e.value, findUIComponentByChild(e.value))));
entries.sort((a, b) {
var aUiComponent = entriesUIComponents[a.value];
var bUiComponent = entriesUIComponents[b.value];
var aIsUIComponent = aUiComponent != null;
var bIsUIComponent = bUiComponent != null;
if (aIsUIComponent && !bIsUIComponent) {
return -1;
} else if (bIsUIComponent && !aIsUIComponent) {
return 1;
} else {
return 0;
}
});
var fieldsValues = <String, String?>{};
for (var entry in entries) {
var key = entry.key;
if (fieldsValues.containsKey(key)) continue;
var uiComponent = entriesUIComponents[entry.value];
var value =
parseChildElementValue(entry.value, childUiComponent: uiComponent);
fieldsValues[key] = value;
}
return fieldsValues;
}