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
    ),
  5. required TResult snackBar(
    1. String message,
    2. bool isError
    ),
  6. required TResult bottomSheet(
    1. Widget builder,
    2. bool isDismissible
    ),
})

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,required TResult Function( String message,  bool isError)  snackBar,required TResult Function( Widget builder,  bool isDismissible)  bottomSheet,}) {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);case _SnackBar():
return snackBar(_that.message,_that.isError);case _BottomSheet():
return bottomSheet(_that.builder,_that.isDismissible);}
}