getFieldsExtended method

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

Implementation

Map<String, Object?> getFieldsExtended({
  List<String>? fields,
  List<String>? ignoreFields,
}) {
  var fieldsElementsMap = getFieldsComponentsMap(
    fields: fields,
    ignoreFields: ignoreFields,
  );

  var entries = fieldsElementsMap.entries.toList();
  entries.sort((a, b) {
    var aIsUIComponent = a is UIComponent;
    var bIsUIComponent = b is UIComponent;

    if (aIsUIComponent && !bIsUIComponent) {
      return -1;
    } else if (bIsUIComponent && !aIsUIComponent) {
      return 1;
    } else {
      return 0;
    }
  });

  var fieldsValues = <String, Object?>{};

  for (var entry in entries) {
    var key = entry.key;
    if (fieldsValues.containsKey(key)) continue;
    fieldsValues[key] = entry.value;
  }

  return fieldsValues;
}