when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult commit(
    1. Commit data
    ),
  2. required TResult sync(
    1. Sync data
    ),
  3. required TResult identity(
    1. Identity data
    ),
  4. required TResult account(
    1. Account data
    ),
  5. required TResult info(
    1. Info data
    ),
  6. required TResult unknown(
    1. Map<String, dynamic> data
    ),
})

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( Commit data)  commit,required TResult Function( Sync data)  sync,required TResult Function( Identity data)  identity,required TResult Function( Account data)  account,required TResult Function( Info data)  info,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case USyncSubscribeReposMessageCommit():
return commit(_that.data);case USyncSubscribeReposMessageSync():
return sync(_that.data);case USyncSubscribeReposMessageIdentity():
return identity(_that.data);case USyncSubscribeReposMessageAccount():
return account(_that.data);case USyncSubscribeReposMessageInfo():
return info(_that.data);case USyncSubscribeReposMessageUnknown():
return unknown(_that.data);}
}