when<TResult extends Object?> method
TResult
when<TResult extends Object?>({})
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);
}
}