whenOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
  1. TResult? success(
    1. String title,
    2. String message
    )?,
  2. TResult? failure(
    1. String title,
    2. String message
    )?,
  3. TResult? info(
    1. String title,
    2. String message
    )?,
  4. TResult? warning(
    1. String title,
    2. String message
    )?,
  5. TResult? snackBar(
    1. String message,
    2. bool isError
    )?,
  6. TResult? bottomSheet(
    1. Widget builder,
    2. bool isDismissible
    )?,
})

A variant of when that fallback to returning null

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return null;
}

Implementation

@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function( String title,  String message)?  success,TResult? Function( String title,  String message)?  failure,TResult? Function( String title,  String message)?  info,TResult? Function( String title,  String message)?  warning,TResult? Function( String message,  bool isError)?  snackBar,TResult? Function( Widget builder,  bool isDismissible)?  bottomSheet,}) {final _that = this;
switch (_that) {
case _Success() when success != null:
return success(_that.title,_that.message);case _Failure() when failure != null:
return failure(_that.title,_that.message);case _Info() when info != null:
return info(_that.title,_that.message);case _Warning() when warning != null:
return warning(_that.title,_that.message);case _SnackBar() when snackBar != null:
return snackBar(_that.message,_that.isError);case _BottomSheet() when bottomSheet != null:
return bottomSheet(_that.builder,_that.isDismissible);case _:
  return null;

}
}