maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult inProgress(
    1. int receivedBytes
    )?,
  2. TResult completed(
    1. Uint8List data,
    2. int totalBytes,
    3. bool crcValid
    )?,
  3. TResult failed(
    1. String message,
    2. int? code,
    3. int? receivedBytes
    )?,
  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 receivedBytes)?  inProgress,TResult Function( Uint8List data,  int totalBytes,  bool crcValid)?  completed,TResult Function( String message,  int? code,  int? receivedBytes)?  failed,TResult Function()?  idle,required TResult orElse(),}) {final _that = this;
switch (_that) {
case FetchProgressInProgress() when inProgress != null:
return inProgress(_that.receivedBytes);case FetchProgressCompleted() when completed != null:
return completed(_that.data,_that.totalBytes,_that.crcValid);case FetchProgressFailed() when failed != null:
return failed(_that.message,_that.code,_that.receivedBytes);case FetchProgressIdle() when idle != null:
return idle();case _:
  return orElse();

}
}