getMapField<K extends Object, V extends Object> method

Map<K, V> getMapField<K extends Object, V extends Object>({
  1. required int fieldNumber,
  2. required V valueMapper(
    1. Object? valye
    ),
  3. required K keyMapper(
    1. Object? valye
    ),
  4. Map<K, V>? defaultValue,
})

Implementation

Map<K, V> getMapField<K extends Object, V extends Object>({
  required int fieldNumber,
  required V Function(Object? valye) valueMapper,
  required K Function(Object? valye) keyMapper,
  Map<K, V>? defaultValue,
}) {
  final data = getListOrNull<MapEntry>(fieldNumber);
  if (data == null) {
    if (defaultValue != null) return defaultValue;
    if (syntax.isV3) {
      return <K, V>{};
    }
    throw ProtoException("Missing value for fieldNumber $fieldNumber");
  }
  return Map<K, V>.fromEntries(
    data.map((e) => MapEntry<K, V>(keyMapper(e.key), valueMapper(e.value))),
  );
}