whenOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
  1. TResult? $default(
    1. LocalizedText name,
    2. @JsonKey.new(name: 'welcome_message') LocalizedText welcomeMessage,
    3. @JsonKey.new(name: 'system_instruction') LocalizedText systemInstruction,
    4. @JsonKey.new(name: 'default_locale') String defaultLocale,
    5. @JsonKey.new(name: 'supported_locales') List<String> supportedLocales,
    6. @JsonKey.new(name: 'font_family') String? fontFamily,
    7. String? color,
    8. String? avatar,
    9. @JsonKey.new(name: 'fab_configuration') FabConfiguration? fabConfiguration,
    10. @JsonKey.new(name: 'chat_appearance') ChatAppearance? chatAppearance,
    11. @JsonKey.new(name: 'chat_appearance_dark') ChatAppearance? chatAppearanceDark,
    12. @JsonKey.new(name: 'show_theme_toggle') bool showThemeToggle,
    13. @JsonKey.new(name: 'default_theme_mode') String defaultThemeMode,
    14. @JsonKey.new(name: 'sound_configuration') SoundConfiguration? soundConfiguration,
    15. @JsonKey.new(name: 'enable_user_export') bool enableUserExport,
    16. @JsonKey.new(name: 'enable_clear_history') bool enableClearHistory,
    17. @JsonKey.new(name: 'enable_file_attach') bool enableFileAttach,
    18. @JsonKey.new(name: 'dynamic_language_enabled') bool dynamicLanguageEnabled,
    19. @JsonKey.new(name: 'ai_disclosure_enabled') bool aiDisclosureEnabled,
    20. @JsonKey.new(name: 'ai_disclosure_text') LocalizedText? aiDisclosureText,
    21. @JsonKey.new(name: 'ai_disclosure_require_ack') bool aiDisclosureRequireAck,
    22. @JsonKey.new(name: 'message_reporting_enabled') bool messageReportingEnabled,
    23. @JsonKey.new(name: 'ai_info_url') String? aiInfoUrl,
    24. @JsonKey.new(name: 'privacy_url') String? privacyUrl,
    25. @JsonKey.new(name: 'ai_data_reuse_notice') bool aiDataReuseNotice,
    )?
)

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( LocalizedText name, @JsonKey(name: 'welcome_message')  LocalizedText welcomeMessage, @JsonKey(name: 'system_instruction')  LocalizedText systemInstruction, @JsonKey(name: 'default_locale')  String defaultLocale, @JsonKey(name: 'supported_locales')  List<String> supportedLocales, @JsonKey(name: 'font_family')  String? fontFamily,  String? color,  String? avatar, @JsonKey(name: 'fab_configuration')  FabConfiguration? fabConfiguration, @JsonKey(name: 'chat_appearance')  ChatAppearance? chatAppearance, @JsonKey(name: 'chat_appearance_dark')  ChatAppearance? chatAppearanceDark, @JsonKey(name: 'show_theme_toggle')  bool showThemeToggle, @JsonKey(name: 'default_theme_mode')  String defaultThemeMode, @JsonKey(name: 'sound_configuration')  SoundConfiguration? soundConfiguration, @JsonKey(name: 'enable_user_export')  bool enableUserExport, @JsonKey(name: 'enable_clear_history')  bool enableClearHistory, @JsonKey(name: 'enable_file_attach')  bool enableFileAttach, @JsonKey(name: 'dynamic_language_enabled')  bool dynamicLanguageEnabled, @JsonKey(name: 'ai_disclosure_enabled')  bool aiDisclosureEnabled, @JsonKey(name: 'ai_disclosure_text')  LocalizedText? aiDisclosureText, @JsonKey(name: 'ai_disclosure_require_ack')  bool aiDisclosureRequireAck, @JsonKey(name: 'message_reporting_enabled')  bool messageReportingEnabled, @JsonKey(name: 'ai_info_url')  String? aiInfoUrl, @JsonKey(name: 'privacy_url')  String? privacyUrl, @JsonKey(name: 'ai_data_reuse_notice')  bool aiDataReuseNotice)?  $default,) {final _that = this;
switch (_that) {
case _RemoteConfig() when $default != null:
return $default(_that.name,_that.welcomeMessage,_that.systemInstruction,_that.defaultLocale,_that.supportedLocales,_that.fontFamily,_that.color,_that.avatar,_that.fabConfiguration,_that.chatAppearance,_that.chatAppearanceDark,_that.showThemeToggle,_that.defaultThemeMode,_that.soundConfiguration,_that.enableUserExport,_that.enableClearHistory,_that.enableFileAttach,_that.dynamicLanguageEnabled,_that.aiDisclosureEnabled,_that.aiDisclosureText,_that.aiDisclosureRequireAck,_that.messageReportingEnabled,_that.aiInfoUrl,_that.privacyUrl,_that.aiDataReuseNotice);case _:
  return null;

}
}