maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult preview(
    1. PaidMediaPreview value
    )?,
  2. TResult photo(
    1. PaidMediaPhoto value
    )?,
  3. TResult video(
    1. PaidMediaVideo value
    )?,
  4. TResult livePhoto(
    1. PaidMediaLivePhoto value
    )?,
  5. required TResult orElse(),
})

A variant of map that fallback to returning orElse.

It is equivalent to doing:

switch (sealedClass) {
  case final Subclass value:
    return ...;
  case _:
    return orElse();
}

Implementation

@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  TResult Function(PaidMediaPreview value)? preview,
  TResult Function(PaidMediaPhoto value)? photo,
  TResult Function(PaidMediaVideo value)? video,
  TResult Function(PaidMediaLivePhoto value)? livePhoto,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case PaidMediaPreview() when preview != null:
      return preview(_that);
    case PaidMediaPhoto() when photo != null:
      return photo(_that);
    case PaidMediaVideo() when video != null:
      return video(_that);
    case PaidMediaLivePhoto() when livePhoto != null:
      return livePhoto(_that);
    case _:
      return orElse();
  }
}