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 USubjectStatusViewSubjectRepoRef():
return repoRef(_that.data);case USubjectStatusViewSubjectRepoStrongRef():
return repoStrongRef(_that.data);case USubjectStatusViewSubjectMessageRef():
return messageRef(_that.data);case USubjectStatusViewSubjectConvoRef():
return convoRef(_that.data);case USubjectStatusViewSubjectUnknown():
return unknown(_that.data);}
}