whenOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
  1. TResult? $default(
    1. int totalUsers,
    2. int todayNewUsers,
    3. int activeUsers,
    4. int hourlyActiveUsers,
    5. DateTime statsUpdatedAt,
    6. bool statsStale,
    7. int totalApiKeys,
    8. int activeApiKeys,
    9. int totalAccounts,
    10. int normalAccounts,
    11. int errorAccounts,
    12. int rateLimitAccounts,
    13. int overloadAccounts,
    14. int totalRequests,
    15. int totalInputTokens,
    16. int totalOutputTokens,
    17. int totalCacheCreationTokens,
    18. int totalCacheReadTokens,
    19. int totalTokens,
    20. Sub2ApiDecimal totalCost,
    21. Sub2ApiDecimal totalActualCost,
    22. Sub2ApiDecimal totalAccountCost,
    23. int todayRequests,
    24. int todayInputTokens,
    25. int todayOutputTokens,
    26. int todayCacheCreationTokens,
    27. int todayCacheReadTokens,
    28. int todayTokens,
    29. Sub2ApiDecimal todayCost,
    30. Sub2ApiDecimal todayActualCost,
    31. Sub2ApiDecimal todayAccountCost,
    32. Sub2ApiDecimal averageDurationMs,
    33. int rpm,
    34. int tpm,
    35. int uptime,
    )?
)

A variant of when that fallback to returning null

It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
  TResult? Function(
    int totalUsers,
    int todayNewUsers,
    int activeUsers,
    int hourlyActiveUsers,
    DateTime statsUpdatedAt,
    bool statsStale,
    int totalApiKeys,
    int activeApiKeys,
    int totalAccounts,
    int normalAccounts,
    int errorAccounts,
    int rateLimitAccounts,
    int overloadAccounts,
    int totalRequests,
    int totalInputTokens,
    int totalOutputTokens,
    int totalCacheCreationTokens,
    int totalCacheReadTokens,
    int totalTokens,
    Sub2ApiDecimal totalCost,
    Sub2ApiDecimal totalActualCost,
    Sub2ApiDecimal totalAccountCost,
    int todayRequests,
    int todayInputTokens,
    int todayOutputTokens,
    int todayCacheCreationTokens,
    int todayCacheReadTokens,
    int todayTokens,
    Sub2ApiDecimal todayCost,
    Sub2ApiDecimal todayActualCost,
    Sub2ApiDecimal todayAccountCost,
    Sub2ApiDecimal averageDurationMs,
    int rpm,
    int tpm,
    int uptime,
  )?
  $default,
) {
  final _that = this;
  switch (_that) {
    case _Sub2ApiAdminDashboardSnapshotStats() when $default != null:
      return $default(
        _that.totalUsers,
        _that.todayNewUsers,
        _that.activeUsers,
        _that.hourlyActiveUsers,
        _that.statsUpdatedAt,
        _that.statsStale,
        _that.totalApiKeys,
        _that.activeApiKeys,
        _that.totalAccounts,
        _that.normalAccounts,
        _that.errorAccounts,
        _that.rateLimitAccounts,
        _that.overloadAccounts,
        _that.totalRequests,
        _that.totalInputTokens,
        _that.totalOutputTokens,
        _that.totalCacheCreationTokens,
        _that.totalCacheReadTokens,
        _that.totalTokens,
        _that.totalCost,
        _that.totalActualCost,
        _that.totalAccountCost,
        _that.todayRequests,
        _that.todayInputTokens,
        _that.todayOutputTokens,
        _that.todayCacheCreationTokens,
        _that.todayCacheReadTokens,
        _that.todayTokens,
        _that.todayCost,
        _that.todayActualCost,
        _that.todayAccountCost,
        _that.averageDurationMs,
        _that.rpm,
        _that.tpm,
        _that.uptime,
      );
    case _:
      return null;
  }
}