maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult bytes(
    1. double value
    )?,
  2. TResult kb(
    1. double value
    )?,
  3. TResult mb(
    1. double value
    )?,
  4. TResult gb(
    1. double value
    )?,
  5. TResult tb(
    1. double value
    )?,
  6. required TResult orElse(),
})

A variant of when that fallback to an orElse callback.

It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  TResult Function(double value)? bytes,
  TResult Function(double value)? kb,
  TResult Function(double value)? mb,
  TResult Function(double value)? gb,
  TResult Function(double value)? tb,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case BytesModel() when bytes != null:
      return bytes(_that.value);
    case KbModel() when kb != null:
      return kb(_that.value);
    case MbModel() when mb != null:
      return mb(_that.value);
    case GbModel() when gb != null:
      return gb(_that.value);
    case TbModel() when tb != null:
      return tb(_that.value);
    case _:
      return orElse();
  }
}