when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult repoRef(
    1. RepoRef data
    ),
  2. required TResult repoStrongRef(
    1. RepoStrongRef data
    ),
  3. required TResult messageRef(
    1. MessageRef data
    ),
  4. required TResult convoRef(
    1. ConvoRef data
    ),
  5. 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( RepoRef data)  repoRef,required TResult Function( RepoStrongRef data)  repoStrongRef,required TResult Function( MessageRef data)  messageRef,required TResult Function( ConvoRef data)  convoRef,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UModEventViewSubjectRepoRef():
return repoRef(_that.data);case UModEventViewSubjectRepoStrongRef():
return repoStrongRef(_that.data);case UModEventViewSubjectMessageRef():
return messageRef(_that.data);case UModEventViewSubjectConvoRef():
return convoRef(_that.data);case UModEventViewSubjectUnknown():
return unknown(_that.data);}
}