maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult android()?,
  2. TResult ios()?,
  3. TResult macos()?,
  4. TResult web()?,
  5. TResult linux()?,
  6. TResult windows()?,
  7. TResult fuchsia()?,
  8. 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()? android,
  TResult Function()? ios,
  TResult Function()? macos,
  TResult Function()? web,
  TResult Function()? linux,
  TResult Function()? windows,
  TResult Function()? fuchsia,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case AndroidPlatform() when android != null:
      return android();
    case IosPlatform() when ios != null:
      return ios();
    case MacosPlatform() when macos != null:
      return macos();
    case WebPlatform() when web != null:
      return web();
    case LinuxPlatform() when linux != null:
      return linux();
    case WindowsPlatform() when windows != null:
      return windows();
    case FuchsiaPlatform() when fuchsia != null:
      return fuchsia();
    case _:
      return orElse();
  }
}