when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<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: 'show_avatar') bool showAvatar,
    10. @JsonKey.new(name: 'hide_bars_on_scroll') bool hideBarsOnScroll,
    11. @JsonKey.new(name: 'fab_configuration') FabConfiguration? fabConfiguration,
    12. @JsonKey.new(name: 'chat_appearance') ChatAppearance? chatAppearance,
    13. @JsonKey.new(name: 'chat_appearance_dark') ChatAppearance? chatAppearanceDark,
    14. @JsonKey.new(name: 'show_theme_toggle') bool showThemeToggle,
    15. @JsonKey.new(name: 'default_theme_mode') String defaultThemeMode,
    16. @JsonKey.new(name: 'sound_configuration') SoundConfiguration? soundConfiguration,
    17. @JsonKey.new(name: 'enable_user_export') bool enableUserExport,
    18. @JsonKey.new(name: 'enable_clear_history') bool enableClearHistory,
    19. @JsonKey.new(name: 'enable_file_attach') bool enableFileAttach,
    20. @JsonKey.new(name: 'dynamic_language_enabled') bool dynamicLanguageEnabled,
    21. @JsonKey.new(name: 'ai_disclosure_enabled') bool aiDisclosureEnabled,
    22. @JsonKey.new(name: 'ai_disclosure_text') LocalizedText? aiDisclosureText,
    23. @JsonKey.new(name: 'ai_disclosure_require_ack') bool aiDisclosureRequireAck,
    24. @JsonKey.new(name: 'message_reporting_enabled') bool messageReportingEnabled,
    25. @JsonKey.new(name: 'ai_info_url') String? aiInfoUrl,
    26. @JsonKey.new(name: 'privacy_url') String? privacyUrl,
    27. @JsonKey.new(name: 'ai_data_reuse_notice') bool aiDataReuseNotice,
    )
)

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( 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: 'show_avatar')  bool showAvatar, @JsonKey(name: 'hide_bars_on_scroll')  bool hideBarsOnScroll, @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():
return $default(_that.name,_that.welcomeMessage,_that.systemInstruction,_that.defaultLocale,_that.supportedLocales,_that.fontFamily,_that.color,_that.avatar,_that.showAvatar,_that.hideBarsOnScroll,_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 _:
  throw StateError('Unexpected subclass');

}
}