RinggWidgetConfig, the object passed as the first argument to RinggWidgetController. Configure assistant behavior, tools and prompts in the dashboard; use this object for app-level runtime settings.
See Flutter for installation and the integration steps.
agentId is optional and nullable. A null field falls back to the shared default.
Identity and auth
Panel content and mode
Variables
variables are forwarded to the assistant as custom_args_values and fill {{placeholders}} in its prompts. Values are sent verbatim, so the full JSON value space is accepted.
WidgetVariables is Map<String, Object>. Set variables when you build the controller; to change them for a new conversation, build a new controller.
Theme
theme takes a WidgetTheme with thirteen fields. Colors are CSS color strings, not Dart Color objects, so the same theme values work unchanged across web, React Native and Flutter. primaryColor and agentBubbleColor also accept CSS gradients.
Buttons
PortableStyles is the cross-platform style subset: height, width, backgroundColor, padding, borderRadius. Sizes accept a number or a CSS string, so '48px' and 48 both work.
Voice call view
Feedback screen
Set
bypassFeedbackScreen: true to skip the screen entirely.
Chat extras
Web-only options
These exist on the type because the config is shared with the web widget. They are ignored on Flutter, where the panel sizes itself to the device.Defaults
Every optional field falls back to a shared default. These values are generated from one source for all platforms, so the web, React Native and Flutter widgets behave identically when a field is left unset.
Theme values not listed here fall back to the packaged Ringg palette.
Caller identity
The backend allow-lists an assistant’s callers by theOrigin header. Browsers attach one automatically, which is how domain whitelisting works for the web widget. Native HTTP sends nothing, so a webcall request without a caller identity is refused before authentication is even considered.
Add the value to the assistant’s allowed clients under Agent → Webcall → Install & domains in the dashboard. Application ids differ per platform and per build flavor (
.debug, .staging, .dev), so every build you ship needs its own entry. The value that was sent appears in the refused-call response, ready to paste.
On Flutter this is handled for you. The package reads the running app’s id through package_info_plus and sends <platform>://<bundleId>:
Set
clientOrigin only when you want to pin one value, for example a single canonical string across build flavors. It wins over the derived one.
ControllerPorts(httpClient: …) opts out of the default header. Wrap your client to keep it: