maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
  1. TResult $default(
    1. String? host,
    2. String? path,
    3. SplitHTTPMode? mode,
    4. Map<String, String>? headers,
    5. XrayInt32Range? xPaddingBytes,
    6. bool? xPaddingObfsMode,
    7. String? xPaddingKey,
    8. String? xPaddingHeader,
    9. SplitHTTPPlacement? xPaddingPlacement,
    10. SplitHTTPPaddingMethod? xPaddingMethod,
    11. String? uplinkHTTPMethod,
    12. SplitHTTPPlacement? sessionPlacement,
    13. String? sessionKey,
    14. SplitHTTPPlacement? seqPlacement,
    15. String? seqKey,
    16. SplitHTTPPlacement? uplinkDataPlacement,
    17. String? uplinkDataKey,
    18. XrayInt32Range? uplinkChunkSize,
    19. bool? noGRPCHeader,
    20. bool? noSSEHeader,
    21. XrayInt32Range? scMaxEachPostBytes,
    22. XrayInt32Range? scMinPostsIntervalMs,
    23. int? scMaxBufferedPosts,
    24. XrayInt32Range? scStreamUpServerSecs,
    25. int? serverMaxHeaderBytes,
    26. XmuxConfig? xmux,
    27. StreamConfig? downloadSettings,
    28. Map<String, dynamic>? extra,
    )?, {
  2. required TResult orElse(),
})

A variant of when that fallback to an orElse callback.

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return orElse();
}

Implementation

@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
  TResult Function(
          String? host,
          String? path,
          SplitHTTPMode? mode,
          Map<String, String>? headers,
          XrayInt32Range? xPaddingBytes,
          bool? xPaddingObfsMode,
          String? xPaddingKey,
          String? xPaddingHeader,
          SplitHTTPPlacement? xPaddingPlacement,
          SplitHTTPPaddingMethod? xPaddingMethod,
          String? uplinkHTTPMethod,
          SplitHTTPPlacement? sessionPlacement,
          String? sessionKey,
          SplitHTTPPlacement? seqPlacement,
          String? seqKey,
          SplitHTTPPlacement? uplinkDataPlacement,
          String? uplinkDataKey,
          XrayInt32Range? uplinkChunkSize,
          bool? noGRPCHeader,
          bool? noSSEHeader,
          XrayInt32Range? scMaxEachPostBytes,
          XrayInt32Range? scMinPostsIntervalMs,
          int? scMaxBufferedPosts,
          XrayInt32Range? scStreamUpServerSecs,
          int? serverMaxHeaderBytes,
          XmuxConfig? xmux,
          StreamConfig? downloadSettings,
          Map<String, dynamic>? extra)?
      $default, {
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case _SplitHTTPConfig() when $default != null:
      return $default(
          _that.host,
          _that.path,
          _that.mode,
          _that.headers,
          _that.xPaddingBytes,
          _that.xPaddingObfsMode,
          _that.xPaddingKey,
          _that.xPaddingHeader,
          _that.xPaddingPlacement,
          _that.xPaddingMethod,
          _that.uplinkHTTPMethod,
          _that.sessionPlacement,
          _that.sessionKey,
          _that.seqPlacement,
          _that.seqKey,
          _that.uplinkDataPlacement,
          _that.uplinkDataKey,
          _that.uplinkChunkSize,
          _that.noGRPCHeader,
          _that.noSSEHeader,
          _that.scMaxEachPostBytes,
          _that.scMinPostsIntervalMs,
          _that.scMaxBufferedPosts,
          _that.scStreamUpServerSecs,
          _that.serverMaxHeaderBytes,
          _that.xmux,
          _that.downloadSettings,
          _that.extra);
    case _:
      return orElse();
  }
}