when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult success(
    1. String title,
    2. String message
    ),
  2. required TResult failure(
    1. String title,
    2. String message
    ),
  3. required TResult info(
    1. String title,
    2. String message
    ),
  4. required TResult warning(
    1. String title,
    2. String message
    ),
})

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( String title,  String message)  success,required TResult Function( String title,  String message)  failure,required TResult Function( String title,  String message)  info,required TResult Function( String title,  String message)  warning,}) {final _that = this;
switch (_that) {
case _Success():
return success(_that.title,_that.message);case _Failure():
return failure(_that.title,_that.message);case _Info():
return info(_that.title,_that.message);case _Warning():
return warning(_that.title,_that.message);}
}