getFieldsGroupEntriesByPrefix<K, V> method

List<MapEntry<K, V?>> getFieldsGroupEntriesByPrefix<K, V>(
  1. String groupPrefix, {
  2. Map<String, String?>? fields,
  3. String keyDelimiter = '_',
  4. String keyPart(
    1. String key
    )?,
  5. K keyAs(
    1. String key
    )?,
  6. V? valueAs(
    1. String key
    )?,
  7. bool filter(
    1. K key,
    2. V? value
    )?,
})
inherited

Implementation

List<MapEntry<K, V?>> getFieldsGroupEntriesByPrefix<K, V>(
  String groupPrefix, {
  Map<String, String?>? fields,
  String keyDelimiter = '_',
  String Function(String key)? keyPart,
  K Function(String key)? keyAs,
  V? Function(String key)? valueAs,
  bool Function(K key, V? value)? filter,
}) {
  keyPart ??= (k) => k.split(keyDelimiter).last;
  keyAs ??= _parserFor<K>();
  valueAs ??= _parserForNullable<V>();

  fields ??= getFields();

  var entries =
      fields.entries.where((e) => e.key.startsWith(groupPrefix)).map((e) {
    var key = keyPart!(e.key);
    var value = e.value ?? '';
    var k = keyAs!(key);
    var v = valueAs!(value);
    return k != null ? MapEntry(k, v) : null;
  }).whereNotNull();

  if (filter != null) {
    entries = entries.where((e) => filter(e.key, e.value));
  }

  return entries.toList();
}