when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>(
  1. TResult $default(
    1. String? name,
    2. String? path,
    3. String? content,
    4. String? sha,
    5. String? type,
    6. String? encoding,
    7. String? patch,
    8. String? status,
    9. GithubUserModelRef? committer,
    10. int size,
    11. int additionsCount,
    12. int deletionsCount,
    13. int changesCount,
    14. ModelUri? rawUrl,
    15. ModelUri? blobUrl,
    16. ModelUri? htmlUrl,
    17. ModelUri? gitUrl,
    18. ModelUri? downloadUrl,
    19. List<GithubContentModel>? children,
    20. bool fromServer,
    )
)

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(
          String? name,
          String? path,
          String? content,
          String? sha,
          String? type,
          String? encoding,
          String? patch,
          String? status,
          @refParam GithubUserModelRef committer,
          int size,
          int additionsCount,
          int deletionsCount,
          int changesCount,
          ModelUri? rawUrl,
          ModelUri? blobUrl,
          ModelUri? htmlUrl,
          ModelUri? gitUrl,
          ModelUri? downloadUrl,
          @jsonParam List<GithubContentModel>? children,
          bool fromServer)
      $default,
) {
  final _that = this;
  switch (_that) {
    case _GithubContentModel():
      return $default(
          _that.name,
          _that.path,
          _that.content,
          _that.sha,
          _that.type,
          _that.encoding,
          _that.patch,
          _that.status,
          _that.committer,
          _that.size,
          _that.additionsCount,
          _that.deletionsCount,
          _that.changesCount,
          _that.rawUrl,
          _that.blobUrl,
          _that.htmlUrl,
          _that.gitUrl,
          _that.downloadUrl,
          _that.children,
          _that.fromServer);
    case _:
      throw StateError('Unexpected subclass');
  }
}