when<TResult extends Object?> method
TResult
when<TResult extends Object?>(
- TResult $default(
- int? id,
- int? number,
- String? state,
- String? title,
- String? description,
- String? nodeId,
- GithubUserModelRef? creator,
- int openIssuesCount,
- int closedIssuesCount,
- ModelUri? url,
- ModelUri? htmlUrl,
- ModelUri? labelsUrl,
- ModelTimestamp? dueOn,
- ModelTimestamp? closedAt,
- ModelTimestamp createdAt,
- ModelTimestamp updatedAt,
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?>(
TResult Function(
int? id,
int? number,
String? state,
String? title,
String? description,
String? nodeId,
@refParam GithubUserModelRef? creator,
int openIssuesCount,
int closedIssuesCount,
ModelUri? url,
ModelUri? htmlUrl,
ModelUri? labelsUrl,
ModelTimestamp? dueOn,
ModelTimestamp? closedAt,
ModelTimestamp createdAt,
ModelTimestamp updatedAt)
$default,
) {
final _that = this;
switch (_that) {
case _GithubMilestoneValue():
return $default(
_that.id,
_that.number,
_that.state,
_that.title,
_that.description,
_that.nodeId,
_that.creator,
_that.openIssuesCount,
_that.closedIssuesCount,
_that.url,
_that.htmlUrl,
_that.labelsUrl,
_that.dueOn,
_that.closedAt,
_that.createdAt,
_that.updatedAt);
case _:
throw StateError('Unexpected subclass');
}
}