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. int todayRequests,
    23. int todayInputTokens,
    24. int todayOutputTokens,
    25. int todayCacheCreationTokens,
    26. int todayCacheReadTokens,
    27. int todayTokens,
    28. Sub2ApiDecimal todayCost,
    29. Sub2ApiDecimal todayActualCost,
    30. Sub2ApiDecimal averageDurationMs,
    31. int uptime,
    32. int rpm,
    33. int tpm,
    )?
)

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,
    int todayRequests,
    int todayInputTokens,
    int todayOutputTokens,
    int todayCacheCreationTokens,
    int todayCacheReadTokens,
    int todayTokens,
    Sub2ApiDecimal todayCost,
    Sub2ApiDecimal todayActualCost,
    Sub2ApiDecimal averageDurationMs,
    int uptime,
    int rpm,
    int tpm,
  )?
  $default,
) {
  final _that = this;
  switch (_that) {
    case _Sub2ApiAdminDashboardStats() 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.todayRequests,
        _that.todayInputTokens,
        _that.todayOutputTokens,
        _that.todayCacheCreationTokens,
        _that.todayCacheReadTokens,
        _that.todayTokens,
        _that.todayCost,
        _that.todayActualCost,
        _that.averageDurationMs,
        _that.uptime,
        _that.rpm,
        _that.tpm,
      );
    case _:
      return null;
  }
}