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);
  }
}