RemoteConfig class abstract

Remote configuration fetched from the server.

Represents the bot configuration as stored on the server, which may have different field names than the local configuration.

Available extensions
Annotations
  • @freezed

Constructors

RemoteConfig({required LocalizedText name, @JsonKey.new(name: 'welcome_message') required LocalizedText welcomeMessage, @JsonKey.new(name: 'system_instruction') required LocalizedText systemInstruction, @JsonKey.new(name: 'default_locale') @Default.new('en') String defaultLocale, @JsonKey.new(name: 'supported_locales') @Default.new(['en']) List<String> supportedLocales, @JsonKey.new(name: 'font_family') String? fontFamily, String? color, String? avatar, @JsonKey.new(name: 'show_avatar') @Default.new(true) bool showAvatar, @JsonKey.new(name: 'hide_bars_on_scroll') @Default.new(false) bool hideBarsOnScroll, @JsonKey.new(name: 'fab_configuration') FabConfiguration? fabConfiguration, @JsonKey.new(name: 'chat_appearance') ChatAppearance? chatAppearance, @JsonKey.new(name: 'chat_appearance_dark') ChatAppearance? chatAppearanceDark, @JsonKey.new(name: 'show_theme_toggle') @Default.new(true) bool showThemeToggle, @JsonKey.new(name: 'default_theme_mode') @Default.new('system') String defaultThemeMode, @JsonKey.new(name: 'sound_configuration') SoundConfiguration? soundConfiguration, @JsonKey.new(name: 'enable_user_export') @Default.new(true) bool enableUserExport, @JsonKey.new(name: 'enable_clear_history') @Default.new(true) bool enableClearHistory, @JsonKey.new(name: 'enable_file_attach') @Default.new(true) bool enableFileAttach, @JsonKey.new(name: 'dynamic_language_enabled') @Default.new(false) bool dynamicLanguageEnabled, @JsonKey.new(name: 'ai_disclosure_enabled') @Default.new(true) bool aiDisclosureEnabled, @JsonKey.new(name: 'ai_disclosure_text') LocalizedText? aiDisclosureText, @JsonKey.new(name: 'ai_disclosure_require_ack') @Default.new(false) bool aiDisclosureRequireAck, @JsonKey.new(name: 'message_reporting_enabled') @Default.new(true) bool messageReportingEnabled, @JsonKey.new(name: 'ai_info_url') String? aiInfoUrl, @JsonKey.new(name: 'privacy_url') String? privacyUrl, @JsonKey.new(name: 'ai_data_reuse_notice') @Default.new(false) bool aiDataReuseNotice})
const
factory
RemoteConfig.fromJson(Map<String, Object?> json)
factory

Properties

aiDataReuseNotice bool
Whether to show the data-reuse notice line.
no setterinherited
aiDisclosureEnabled bool
Server gate for the in-chat AI disclosure notice.
no setterinherited
aiDisclosureRequireAck bool
Whether the disclosure requires a one-time acknowledgement.
no setterinherited
aiDisclosureText LocalizedText?
Per-locale disclosure text (null = SDK default).
no setterinherited
aiInfoUrl String?
"Learn more" About-AI link.
no setterinherited
avatar String?
Avatar URL or data from server.
no setterinherited
chatAppearance ChatAppearance?
Chat-surface appearance from server. When present, fields override the SDK's MD3 defaults; when null/missing, the SDK uses the ambient ColorScheme.
no setterinherited
chatAppearanceDark ChatAppearance?
Dark-mode chat-surface appearance. Picked when the active theme brightness is dark; null/missing → the SDK's MD3 dark defaults.
no setterinherited
color String?
Primary color setting from server.
no setterinherited
copyWith → $RemoteConfigCopyWith<RemoteConfig>
Create a copy of RemoteConfig with the given fields replaced by the non-null parameter values.
no setterinherited
defaultLocale String
Default locale from server
no setterinherited
defaultThemeMode String
Initial theme mode before the user overrides it locally — one of 'light', 'dark', or 'system' (follows the host device brightness).
no setterinherited
dynamicLanguageEnabled bool
Server gate for the live AI language switch + manual picker.
no setterinherited
enableClearHistory bool
Server-side gate for the in-chat "Clear chat history" menu item.
no setterinherited
enableFileAttach bool
Server-side gate for the paperclip attach button in chat input.
no setterinherited
enableUserExport bool
Server-side gate for the in-chat "Export chat" menu item. Hosts can toggle this from the dashboard to hide the action without redeploying the widget. Defaults true to match the chat-side default; the host-supplied BotConfiguration value still wins per the standard precedence rules.
no setterinherited
fabConfiguration FabConfiguration?
FAB configuration from server.
no setterinherited
fontFamily String?
Font family setting from server. The backend emits snake_case font_family; without this JSONKey the generated parser would read fontFamily and always get null, silently falling back to 'Roboto' no matter what font the tenant configured.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
hideBarsOnScroll bool
Server toggle for the auto-hide-on-scroll behaviour of the header + input bars — the dashboard's "Auto-hide bars on scroll" switch. Defaults false (bars pinned) so an older backend that omits the field keeps today's behaviour.
no setterinherited
messageReportingEnabled bool
Server gate for the in-chat message report ("Bad response") flow.
no setterinherited
name LocalizedText
Bot display name from server (localized).
no setterinherited
privacyUrl String?
Privacy page link (fallback "Learn more").
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
showAvatar bool
Server toggle for per-message + typing-indicator avatars — the dashboard's "Show avatar on messages" switch. Defaults true (avatar shown) so an older backend that omits the field keeps today's behaviour; when a tenant turns it off the per-bubble avatar is dropped and bot bubbles grow a small tail instead. The header's brand avatar is unaffected — it's always shown.
no setterinherited
showThemeToggle bool
Server gate for the light/dark theme switcher in the more-options menu. When false the switcher is hidden; the host-supplied BotConfiguration value still wins per the standard precedence.
no setterinherited
soundConfiguration SoundConfiguration?
Per-event sound config from server. Was previously dropped from RemoteConfig (so dashboard sound settings only affected the live preview, not the deployed widget) — now parsed so the canonical config path carries it too.
no setterinherited
supportedLocales List<String>
Supported locales from server
no setterinherited
systemInstruction LocalizedText
System instructions from server (localized).
no setterinherited
welcomeMessage LocalizedText
Welcome message from server configuration (localized).
no setterinherited

Methods

map<TResult extends Object?>(TResult $default(_RemoteConfig value)) → TResult

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A switch-like method, using callbacks.
mapOrNull<TResult extends Object?>(TResult? $default(_RemoteConfig value)?) → TResult?

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A variant of map that fallback to returning null.
maybeMap<TResult extends Object?>(TResult $default(_RemoteConfig value)?, {required TResult orElse()}) → TResult

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A variant of map that fallback to returning orElse.
maybeWhen<TResult extends Object?>(TResult $default(LocalizedText name, LocalizedText welcomeMessage, LocalizedText systemInstruction, String defaultLocale, List<String> supportedLocales, String? fontFamily, String? color, String? avatar, bool showAvatar, bool hideBarsOnScroll, FabConfiguration? fabConfiguration, ChatAppearance? chatAppearance, ChatAppearance? chatAppearanceDark, bool showThemeToggle, String defaultThemeMode, SoundConfiguration? soundConfiguration, bool enableUserExport, bool enableClearHistory, bool enableFileAttach, bool dynamicLanguageEnabled, bool aiDisclosureEnabled, LocalizedText? aiDisclosureText, bool aiDisclosureRequireAck, bool messageReportingEnabled, String? aiInfoUrl, String? privacyUrl, bool aiDataReuseNotice)?, {required TResult orElse()}) → TResult

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A variant of when that fallback to an orElse callback.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toBotConfiguration({required String userID, required String projectSecretKey, Uint8List? avatar, String? currentLocale, String? userIdSignature, bool isPreviewMode = false, Map<String, dynamic>? userContext, String? authToken}) BotConfiguration

Available on RemoteConfig, provided by the RemoteConfigMapping extension

toJson() Map<String, dynamic>
Serializes this RemoteConfig to a JSON map.
inherited
toString() String
A string representation of this object.
inherited
when<TResult extends Object?>(TResult $default(LocalizedText name, LocalizedText welcomeMessage, LocalizedText systemInstruction, String defaultLocale, List<String> supportedLocales, String? fontFamily, String? color, String? avatar, bool showAvatar, bool hideBarsOnScroll, FabConfiguration? fabConfiguration, ChatAppearance? chatAppearance, ChatAppearance? chatAppearanceDark, bool showThemeToggle, String defaultThemeMode, SoundConfiguration? soundConfiguration, bool enableUserExport, bool enableClearHistory, bool enableFileAttach, bool dynamicLanguageEnabled, bool aiDisclosureEnabled, LocalizedText? aiDisclosureText, bool aiDisclosureRequireAck, bool messageReportingEnabled, String? aiInfoUrl, String? privacyUrl, bool aiDataReuseNotice)) → TResult

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A switch-like method, using callbacks.
whenOrNull<TResult extends Object?>(TResult? $default(LocalizedText name, LocalizedText welcomeMessage, LocalizedText systemInstruction, String defaultLocale, List<String> supportedLocales, String? fontFamily, String? color, String? avatar, bool showAvatar, bool hideBarsOnScroll, FabConfiguration? fabConfiguration, ChatAppearance? chatAppearance, ChatAppearance? chatAppearanceDark, bool showThemeToggle, String defaultThemeMode, SoundConfiguration? soundConfiguration, bool enableUserExport, bool enableClearHistory, bool enableFileAttach, bool dynamicLanguageEnabled, bool aiDisclosureEnabled, LocalizedText? aiDisclosureText, bool aiDisclosureRequireAck, bool messageReportingEnabled, String? aiInfoUrl, String? privacyUrl, bool aiDataReuseNotice)?) → TResult?

Available on RemoteConfig, provided by the RemoteConfigPatterns extension

A variant of when that fallback to returning null

Operators

operator ==(Object other) bool
The equality operator.
inherited