getFields method

Map<String, String?> getFields({
  1. List<String>? fields,
  2. List<String>? ignoreFields,
})
inherited

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;
}