when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>(
  1. TResult $default(
    1. String url,
    2. String method,
    3. dynamic data,
    4. Map<String, dynamic> queryParams,
    5. int statusCode,
    6. dynamic body,
    7. Map<String, dynamic> headers,
    8. Map<String, dynamic> responseHeaders,
    9. int timestamp,
    10. String projectName,
    11. Response? response,
    12. List<String> extendNotes,
    )
)

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 url,
          String method,
          dynamic data,
          Map<String, dynamic> queryParams,
          int statusCode,
          @JsonKey(toJson: _toJsonByData) dynamic body,
          Map<String, dynamic> headers,
          Map<String, dynamic> responseHeaders,
          int timestamp,
          String projectName,
          @JsonKey(
              toJson: null,
              fromJson: null,
              includeFromJson: false,
              includeToJson: false)
          Response? response,
          List<String> extendNotes)
      $default,
) {
  final _that = this;
  switch (_that) {
    case _SendResponseModel():
      return $default(
          _that.url,
          _that.method,
          _that.data,
          _that.queryParams,
          _that.statusCode,
          _that.body,
          _that.headers,
          _that.responseHeaders,
          _that.timestamp,
          _that.projectName,
          _that.response,
          _that.extendNotes);
  }
}