maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult inProgress(
    1. int elapsedSeconds,
    2. int totalSeconds,
    3. double? fraction
    )?,
  2. TResult completed(
    1. int totalSeconds
    )?,
  3. TResult failed(
    1. String message,
    2. int? code,
    3. int? elapsedSeconds
    )?,
  4. TResult idle()?,
  5. required TResult orElse(),
})

A variant of when that fallback to an orElse callback.

It is equivalent to doing:

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

Implementation

@optionalTypeArgs TResult maybeWhen<TResult extends Object?>({TResult Function( int elapsedSeconds,  int totalSeconds,  double? fraction)?  inProgress,TResult Function( int totalSeconds)?  completed,TResult Function( String message,  int? code,  int? elapsedSeconds)?  failed,TResult Function()?  idle,required TResult orElse(),}) {final _that = this;
switch (_that) {
case MeasurementProgressInProgress() when inProgress != null:
return inProgress(_that.elapsedSeconds,_that.totalSeconds,_that.fraction);case MeasurementProgressCompleted() when completed != null:
return completed(_that.totalSeconds);case MeasurementProgressFailed() when failed != null:
return failed(_that.message,_that.code,_that.elapsedSeconds);case MeasurementProgressIdle() when idle != null:
return idle();case _:
  return orElse();

}
}