when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult transfer(
    1. SplTokenTransferInfo info,
    2. String type
    ),
  2. required TResult transferChecked(
    1. SplTokenTransferCheckedInfo info,
    2. String type
    ),
  3. required TResult generic(
    1. dynamic info,
    2. String type
    ),
})

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case Subclass2(:final field2):
    return ...;
}

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function( SplTokenTransferInfo info,  String type)  transfer,required TResult Function( SplTokenTransferCheckedInfo info,  String type)  transferChecked,required TResult Function( dynamic info,  String type)  generic,}) {final _that = this;
switch (_that) {
case ParsedSplTokenTransferInstruction():
return transfer(_that.info,_that.type);case ParsedSplTokenTransferCheckedInstruction():
return transferChecked(_that.info,_that.type);case ParsedSplTokenGenericInstruction():
return generic(_that.info,_that.type);}
}