when<TResult extends Object?> method

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

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

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

Implementation

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