maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult system(
    1. String programId,
    2. ParsedSystemInstruction parsed
    )?,
  2. TResult splToken(
    1. ParsedSplTokenInstruction parsed
    )?,
  3. TResult memo(
    1. String? memo
    )?,
  4. TResult unsupported(
    1. String? program
    )?,
  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( String programId,  ParsedSystemInstruction parsed)?  system,TResult Function( ParsedSplTokenInstruction parsed)?  splToken,TResult Function(@JsonKey(name: 'parsed')  String? memo)?  memo,TResult Function( String? program)?  unsupported,required TResult orElse(),}) {final _that = this;
switch (_that) {
case ParsedInstructionSystem() when system != null:
return system(_that.programId,_that.parsed);case ParsedInstructionSplToken() when splToken != null:
return splToken(_that.parsed);case ParsedInstructionMemo() when memo != null:
return memo(_that.memo);case ParsedInstructionUnsupported() when unsupported != null:
return unsupported(_that.program);case _:
  return orElse();

}
}