when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult queueActivity(
    1. QueueActivity data
    ),
  2. required TResult assignmentActivity(
    1. AssignmentActivity data
    ),
  3. required TResult escalationActivity(
    1. EscalationActivity data
    ),
  4. required TResult closeActivity(
    1. CloseActivity data
    ),
  5. required TResult reopenActivity(
    1. ReopenActivity data
    ),
  6. required TResult noteActivity(
    1. NoteActivity data
    ),
  7. 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( QueueActivity data)  queueActivity,required TResult Function( AssignmentActivity data)  assignmentActivity,required TResult Function( EscalationActivity data)  escalationActivity,required TResult Function( CloseActivity data)  closeActivity,required TResult Function( ReopenActivity data)  reopenActivity,required TResult Function( NoteActivity data)  noteActivity,required TResult Function( Map<String, dynamic> data)  unknown,}) {final _that = this;
switch (_that) {
case UReportCreateActivityActivityQueueActivity():
return queueActivity(_that.data);case UReportCreateActivityActivityAssignmentActivity():
return assignmentActivity(_that.data);case UReportCreateActivityActivityEscalationActivity():
return escalationActivity(_that.data);case UReportCreateActivityActivityCloseActivity():
return closeActivity(_that.data);case UReportCreateActivityActivityReopenActivity():
return reopenActivity(_that.data);case UReportCreateActivityActivityNoteActivity():
return noteActivity(_that.data);case UReportCreateActivityActivityUnknown():
return unknown(_that.data);}
}