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 UReportViewSubjectRepoRef():
return repoRef(_that.data);case UReportViewSubjectRepoStrongRef():
return repoStrongRef(_that.data);case UReportViewSubjectMessageRef():
return messageRef(_that.data);case UReportViewSubjectConvoRef():
return convoRef(_that.data);case UReportViewSubjectUnknown():
return unknown(_that.data);}
}