when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult shown(
    1. String beadId,
    2. String title,
    3. IssueType issueType,
    4. BeadStatus status,
    5. int priority,
    6. String description,
    7. String design,
    8. String acceptanceCriteria,
    9. String notes,
    10. Map<String, String?> approval,
    11. List<BeadDependency> dependencies,
    12. String? revision,
    13. Map<String, int> withheld,
    ),
  2. required TResult unchanged(
    1. String beadId,
    2. String revision
    ),
  3. required TResult refused(
    1. String beadId,
    2. String reason,
    3. int withheldReasonBytes
    ),
})

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( String beadId,  String title,  IssueType issueType,  BeadStatus status,  int priority,  String description,  String design,  String acceptanceCriteria,  String notes,  Map<String, String?> approval,  List<BeadDependency> dependencies,  String? revision,  Map<String, int> withheld)  shown,required TResult Function( String beadId,  String revision)  unchanged,required TResult Function( String beadId,  String reason,  int withheldReasonBytes)  refused,}) {final _that = this;
switch (_that) {
case BeadShown():
return shown(_that.beadId,_that.title,_that.issueType,_that.status,_that.priority,_that.description,_that.design,_that.acceptanceCriteria,_that.notes,_that.approval,_that.dependencies,_that.revision,_that.withheld);case ShowUnchanged():
return unchanged(_that.beadId,_that.revision);case ShowRefused():
return refused(_that.beadId,_that.reason,_that.withheldReasonBytes);}
}