findDiscriminator method

Discriminator? findDiscriminator(
  1. Decoder decoder, [
  2. String? currentValue,
  3. List<Discriminator>? customDiscriminators
])

Implementation

Discriminator? findDiscriminator(Decoder decoder, [String? currentValue, List<Discriminator>? customDiscriminators]) {
  final discriminators = [...this.discriminators, ...?customDiscriminators];

  String? discriminatorValue = currentValue;
  if (discriminatorValue == null && discriminatorKey != null) {
    discriminatorValue = decoder.clone().decodeMapped().decodeStringOrNull(discriminatorKey!);
  }

  for (var d in discriminators) {
    final discriminator = d.canDecodable(decoder, discriminatorKey, discriminatorValue);
    if (discriminator == null) continue;
    return discriminator;
  }

  return null;
}