map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>({
  1. required TResult network(
    1. MyNetworkImage value
    ),
  2. required TResult base64(
    1. MyBase64Image value
    ),
  3. required TResult filePath(
    1. MyFilePathImage value
    ),
  4. required TResult asset(
    1. MyAssetImage value
    ),
})

A switch-like method, using callbacks.

Callbacks receives the raw object, upcasted. It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult map<TResult extends Object?>({
  required TResult Function(MyNetworkImage value) network,
  required TResult Function(MyBase64Image value) base64,
  required TResult Function(MyFilePathImage value) filePath,
  required TResult Function(MyAssetImage value) asset,
}) {
  final _that = this;
  switch (_that) {
    case MyNetworkImage():
      return network(_that);
    case MyBase64Image():
      return base64(_that);
    case MyFilePathImage():
      return filePath(_that);
    case MyAssetImage():
      return asset(_that);
  }
}