getFieldsValuesFromMap method

Map<String, Object?> getFieldsValuesFromMap(
  1. List<String> fieldsNames,
  2. Map<String, Object?> map, {
  3. Map<String, int>? fieldsNamesIndexes,
  4. List<String>? fieldsNamesLC,
  5. List<String>? fieldsNamesSimple,
  6. bool includeAbsentFields = false,
  7. List<String>? returnMapUsedKeys,
})
inherited

Returns a Map with the fields values populated from the provided map.

The field name resolution is case insensitive. See getFieldValueFromMap.

Implementation

Map<String, Object?> getFieldsValuesFromMap(
  List<String> fieldsNames,
  Map<String, Object?> map, {
  Map<String, int>? fieldsNamesIndexes,
  List<String>? fieldsNamesLC,
  List<String>? fieldsNamesSimple,
  bool includeAbsentFields = false,
  List<String>? returnMapUsedKeys,
}) {
  var mapLC = <String, String>{};
  var mapSimple = <String, String>{};

  var returnMapField = returnMapUsedKeys != null ? <String>[''] : null;

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

  for (var f in fieldsNames) {
    String? fLC, fSimple;
    if (fieldsNamesIndexes != null) {
      var idx = fieldsNamesIndexes[f]!;
      fLC = fieldsNamesLC?[idx];
      fSimple = fieldsNamesSimple?[idx];
    }

    var entry = _getFieldValueFromMapImpl(
        f, fLC, fSimple, map, mapLC, mapSimple, returnMapField);

    if (entry == null) {
      if (includeAbsentFields) {
        fields[f] = null;
      }
    } else {
      if (returnMapUsedKeys != null) {
        var mapField = returnMapField![0];
        returnMapUsedKeys.add(mapField);
      }

      fields[entry.key] = entry.value;
    }
  }

  return fields;
}