maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult network(
    1. MyNetworkImage value
    )?,
  2. TResult base64(
    1. MyBase64Image value
    )?,
  3. TResult filePath(
    1. MyFilePathImage value
    )?,
  4. TResult asset(
    1. MyAssetImage 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(MyNetworkImage value)? network,
  TResult Function(MyBase64Image value)? base64,
  TResult Function(MyFilePathImage value)? filePath,
  TResult Function(MyAssetImage value)? asset,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case MyNetworkImage() when network != null:
      return network(_that);
    case MyBase64Image() when base64 != null:
      return base64(_that);
    case MyFilePathImage() when filePath != null:
      return filePath(_that);
    case MyAssetImage() when asset != null:
      return asset(_that);
    case _:
      return orElse();
  }
}