Flutter SDK Chatbot Builder
Flutter SDK for iOS and Android apps with one Dart API and no WebView. Version 2.0.0 matches the web widget: every flow step, the AI agent, live chat handover, the help centre and your dashboard's look, in five languages.
To build a Flutter SDK chatbot with Conferbot, sign up free, design your flow in the no-code visual builder, connect your Flutter SDK account, and publish - typically live in a few minutes with no coding. The free plan needs no credit card, and the same bot can also run on your website and other messaging channels.
Install the Flutter SDK 2.0.1
Flutter 3.10+, Dart 3, Android API 24+, iOS 13+.
dependencies:
conferbot_flutter: ^2.0.1
provider: ^6.1.1void main() async {
WidgetsFlutterBinding.ensureInitialized();
await StorageService.init();
runApp(const ConferBotFABScope(
apiKey: 'conf_placeholder',
botId: 'YOUR_BOT_ID',
child: MyApp(),
));
}
Chat open on the home screen
AI answer with sources
Handover to a person
Flutter Chatbot Features
Everything you need to build powerful automated conversations
Native Flutter widgets
Every screen is a Flutter widget, not a WebView. The package has no native code of its own.
All 82 flow step types
Questions, choices, conditions, loops, AI routing, knowledge-base answers, OTP, consent, payment and more run as they do in the web widget.
AI agent replies
Formatted AI answers with their sources, starter and follow-up questions, and Helpful? feedback under each answer.
Live chat handover
The handover to your team with the queue and wait time, leave a message, the agent's live replies and the post-chat rating.
Home screen, help centre and Your requests
The web widget's home screen, help articles inside the app and the visitor's own conversations with your team.
Launcher and greeting card
ConferBotFAB draws the web widget's launcher and greeting card from your dashboard settings and opens the chat in a bottom sheet.
Your theme, fonts and sounds
Your dashboard's theme with dark mode, colours, font and message sounds, with no extra packages.
Five languages
The SDK's own words in English, Dutch, French, German or Spanish, chosen from your settings or the phone's language.
Offline queue and opt-in push
Messages sent offline wait and go out on reconnect. Push is opt-in: pass your FCM or APNs token to the provider.
What Can You Build?
Get Started in 7 Simple Steps
Follow this guide to connect your Flutter chatbot
Add to pubspec.yaml: conferbot_flutter: ^2.0.0 (and provider)
Run flutter pub get
Call StorageService.init() before runApp
Create a ConferBotProvider with your bot ID
Wrap your home screen in ConferBotFAB, or use ConferBotFABScope
Set minSdk 24 on Android and iOS 13 in your Podfile
Your Flutter chatbot is ready!
Introduction
Flutter lets one Dart codebase ship to both the App Store and Google Play. The Conferbot Flutter SDK keeps that promise for in-app chat: the Dart package conferbot_flutter on pub.dev adds your Conferbot chatbot, live chat and help centre to an iOS or Android Flutter app, drawn with native Flutter widgets rather than a WebView.
Version 2.0.0 brings the SDK to parity with the Conferbot web widget. It runs all 82 step types of the flow builder, with native step cards for consent, OTP, address, signature, ranking, matrix, payment, slider, date and time, carousel and product cards and picture choices. It also covers AI agent bots with streamed replies and sources, the full human handover lifecycle, the home screen, help centre and "Your requests", and the launcher with its greeting card and mascot. The chat follows your dashboard: the 27 widget themes, colours, fonts and sounds, and five widget languages.
The SDK is a ChangeNotifier (ConferBotProvider) that you provide with the provider package, so it fits Flutter's widget tree the way any app state does. You build the conversation once in Conferbot's no-code chatbot builder, use the AI capabilities and hand over to your team in live chat. The same bot then runs in your Flutter app, on your website and on every messaging channel.
This guide covers integrating a production-ready chatbot into your Flutter app in 2026: installation, what is new in 2.0.0, key features, theming, state management, supported platforms, push notifications, performance and a comparison with React Native.
New to chatbot building? Start with our complete guide to building a chatbot without coding. The same chatbot works on your website, WhatsApp, Messenger, and native Android/iOS apps. Browse our template library for ready-to-deploy in-app chatbot flows. For teams evaluating mobile frameworks, see our dedicated React Native SDK guide.
Source code & documentation: conferbot_flutter on pub.dev | conferbot-flutter on GitHub | Developer Portal Guide | Flutter official docs
Installation Guide
The Conferbot Flutter SDK is published on pub.dev as conferbot_flutter. It needs Flutter 3.10 or later and Dart 3.0 or later (below 4.0). Your app needs Android API 24 (Android 7.0) and iOS 13.0 or later, which are the minimums of the media and audio plugins the SDK uses. The package has no native code of its own.
Step 1: Add the Package
Add the SDK and provider to your pubspec.yaml. The SDK's state is a ChangeNotifier, which you provide with package:provider:
dependencies:
conferbot_flutter: ^2.0.0
provider: ^6.1.1
Step 2: Install
flutter pub get
Step 3: Initialize Storage and the Provider
Session persistence is on by default and uses Hive. Initialize it once before runApp:
import 'package:conferbot_flutter/conferbot_flutter.dart';
WidgetsFlutterBinding.ensureInitialized(); await StorageService.init();
Then create one ConferBotProvider near the top of your widget tree and keep it for the app's life. The bot ID is the credential; the SDK still asks for an apiKey, but the mobile API does not check it, so a placeholder works:
ChangeNotifierProvider(create: (_) => ConferBotProvider(apiKey: 'conf_placeholder', botId: 'YOUR_BOT_ID'), child: const MyApp())
Find the bot ID in the dashboard: open your bot, Publish it, then open the Share tab and pick Flutter under Mobile apps. The snippet there has your bot ID filled in. No account yet? The public demo bot ID 691c970890527a0468f9b2c9 works without one; the example app ships with it.
Step 4: Platform Setup
- Android - set
minSdk = 24inandroid/app/build.gradle, and add theINTERNETpermission to the mainAndroidManifest.xml(Flutter's template adds it only to the debug and profile manifests) - iOS - set
platform :ios, '13.0'in the Podfile and runcd ios && pod install. For voice messages addNSMicrophoneUsageDescriptionand turn onPERMISSION_MICROPHONEfor permission_handler; for file and photo steps addNSPhotoLibraryUsageDescription(andNSCameraUsageDescriptionif visitors take photos)
Step 5: Add the Chat UI
- Floating launcher (recommended) -
ConferBotFAB(child: yourContent)draws the web widget's bubble in the corner of your app and opens the chat in a bottom sheet.ConferBotFABScope(apiKey: ..., botId: ..., child: MaterialApp(...))creates the provider for you - Full screen - push
ChatWidgetas a route, re-providing the provider withChangeNotifierProvider.value - Bottom sheet - show
ChatWidgetin your ownshowModalBottomSheetfrom any button - Home screen - when the owner turns it on in the dashboard,
ChatWidgetand the bubble open on it; steer it from code withprovider.home.showChat(),showHelp()andshowHome() - Headless - skip the bundled widgets and build your own UI on the provider's state (
record,currentUIState,isConnected,currentAgent) and actions (openChat,sendMessage,submitResponse,initiateHandover)
Step 6: Push Notifications (Optional)
Push is off until your app hands the SDK a token. Get one with your push plugin, for example firebase_messaging, and pass it with await provider.setPushToken(token, PushTokenType.fcm). Forward notification taps to provider.handlePushNotification(data). The SDK adds no Firebase dependency of its own. See the push section below for how delivery is switched on.
For detailed setup and troubleshooting, see the Flutter SDK guide on the developer portal and the README on GitHub.
What's New in Flutter SDK 2.0.0
Version 2.0.0 (October 2026) covers everything since 1.0.0. The SDK now does what the Conferbot web widget does, and each feature's status is tracked in the repository's PARITY.md.
- Every flow step type (82) - native step cards for consent, OTP, address (with optional "Use my location"), signature, ranking, matrix, payment, slider, date and time, carousel and product cards, and picture choices. The flow engine is checked against 156 shared test cases produced from the web widget's own code. Booked calendar slots show as taken.
- AI agent bots - the greeting with starter questions, streamed replies, sources, answer buttons, cards, action confirmation, follow-up chips and "Helpful?" with reasons. If the AI has not answered after 45 seconds, the chat says so and offers a retry or a person. When the AI closes an idle conversation, the chat shows "Chat paused" and the visitor's next message picks it up again.
- Live chat and the handover lifecycle - "Connecting you with the team...", queue position, the usual wait and a max-wait countdown, Leave queue, leave a message, receipts, file requests, the lead card, translation with "See original", requeue and transfer lines, "Start a new chat", and a live chat picked back up after an app restart.
- While you wait - help articles for the visitor's question after 6 seconds, the server's suggested article with "That solved it", and seven small waiting games.
- Home screen, help centre and Your requests - the web widget's home screen (greeting by name, "Ask anything", "Talk to us"), help articles opened in the app, and the visitor's own conversations with your team with live replies.
- Launcher, greeting card and mascots - 56 launcher icons, shapes, styles and motion, opt-in entrance, attention and idle-call effects, the greeting card in 11 styles with its rules and frequency, and the owner's mascot (27 characters).
- Look and language from the dashboard - the 27 widget themes with dark mode, chat backgrounds, typing styles, the owner's Google font, message sounds, and the SDK's own words in English, Dutch, French, German or Spanish.
- Human touches - the bot's tapback on an answer, a moment of confetti for a booking, payment or perfect score, rating sparks, a "No rush" nudge and "Edit" on the latest answer.
- After the conversation - the post-chat rating 1.5 seconds after a flow ends (as well as when an agent ends the chat), "Email me this chat", and the owner's post-chat redirect, followed after a 10-second countdown with Cancel.
- Signed-in users and push -
identify(user)with an HMAChashfor identity verification, and opt-in push withsetPushTokenandhandlePushNotification.
Upgrading from 1.0.0? The node handler classes were rewritten, ChatWidget.showKnowledgeBase now follows the owner's help centre switch, the chat can open on the home screen, the post-chat redirect is followed by default, and registerPushToken is now an alias of setPushToken. The CHANGELOG lists every breaking change with its migration.
Key SDK Features
The Conferbot Flutter SDK follows Flutter's own patterns: composition, a ChangeNotifier for state, and ordinary widgets you place in your tree.
Floating Launcher (FAB)
Wrap your app content in ConferBotFAB (or use ConferBotFABScope) and you get the same bottom-corner launcher as the Conferbot web widget, with no styling code. A tap opens the chat in a draggable bottom sheet (92% of the screen height), and a red badge counts messages that arrive while the chat is closed. The launcher is drawn from your dashboard settings: colour or gradient, all 56 launcher icons, shape, style, size, position and offsets, motion, and the greeting card in the style you picked. Dashboard values override the local ConferBotFABConfig fallbacks.
Complete Drop-In Chat UI
ChatWidget is the whole chat: the header with the bot's name, avatar and the team's reply time, the paginated message list, every step type the web widget runs, the offline banner, live chat, the help centre and the composer. It calls openChat() on the provider when it appears.
Flows, AI Agent and Live Chat in One Place
Bot flows, AI agent replies and conversations with your team all run in the same chat. GPT, AI route and extract, knowledge-base answers, OTP, address search and payments go through the bot's server, so the app holds no AI key. When a visitor needs a person, the handover shows the queue and its wait, and the agent's replies arrive live.
Cross-Platform From One Codebase
The SDK is a Dart package with no native code of its own, built for the two targets Flutter apps ship to:
- iOS - iOS 13.0 or later
- Android - API 24 (Android 7.0) or later; the demo recording and example app run against production on Android
- One integration - the same
ConferBotProviderandChatWidgetcode covers both stores
Dart Null-Safety
The SDK requires Dart 3, so its public API is fully null-safe and fits a null-safe Dart project without extra work.
Theming From the Dashboard
When the widget connects, the server sends the bot's customizations, the same ones the web widget uses. The SDK applies them with no code on your side: the 27 widget themes with light, dark or automatic appearance, header and bubble colours, chat background, bubble and option corners, typing style, the bot's name and avatar, and the owner's font.
Five Widget Languages
The SDK's own words (buttons, handover lines, the help centre, dates and times) appear in English, Dutch, French, German or Spanish. The language comes from ConferBotConfig(widgetLanguage:) if your app sets it, otherwise the owner's dashboard setting, otherwise the phone's languages, otherwise English. What you write in the builder is shown as written.
Voice Messages, Media, and Markdown
The package exports voice recording and playback (VoiceInputWidget, VoiceRecorder, VoicePlayer), media viewers (ImageViewer, VideoPlayerWidget, AudioPlayerWidget) and markdown rendering in bot messages, used automatically by the steps that need them.
Push Notifications
When an agent or the AI replies while the visitor is not in the chat, Conferbot can send a push (FCM on Android, APNs on iOS). Pass your token with setPushToken(token, PushTokenType.fcm) and forward taps to handlePushNotification, which opens that conversation. The SDK depends on no Firebase package.
State Management Integration
ConferBotProvider is a standard ChangeNotifier, so it drops into Provider-based apps directly and can be wrapped by Riverpod, Bloc, GetX or MobX the same way you adapt any ChangeNotifier. State is exposed as getters (record, isConnected, unreadCount, currentAgent, currentUIState, serverTheme, requestsUnread, ...), waiting signals arrive through provider.onWidgetSignal, and raw socket events are available via provider.on(event, callback).
Offline Support and Reconnect
Offline mode is on by default (ConferBotConfig.enableOfflineMode). The SDK watches the network with connectivity_plus; messages sent while offline are queued and sent when the connection returns. ChatWidget shows an offline banner with the pending count. After a reconnect, the conversation carries on where it was, and the flow is not run again from the top.
Session Persistence
On by default (enablePersistence: true). Messages and the session are stored on the device with Hive and restored on restart within the sessionTimeout (30 minutes by default, as on the web widget). A restored session resumes at the step it was on. Call await StorageService.init() before runApp.
Help Centre and Analytics
The help centre follows the owner's switch: categories, recent articles, search inside article bodies and "Was this helpful?". Articles the AI cites open in the app. You can also embed KnowledgeBaseScreen on its own. Analytics is on by default with batched uploads.
Customization and Theming
The SDK has two layers of appearance control: your dashboard settings (applied automatically, and they win) and local ConferBotTheme objects as fallbacks.
What the Dashboard Controls
- Colours and themes - the 27 widget themes (Classic, Minimal, Glass, Neo-brutal, Midnight, Aurora and the rest) with light, dark or automatic appearance, header and bubble colours, option colours, chat background (solid, gradients, an image with its mask, or one of 13 patterns), and bubble and option corners
- Launcher - icon, colour, shape, style, size, position, motion, entrance, attention and idle call effects, and the mascot
- Greeting card - its 11 styles, rules and frequency
- Home screen and help centre - the home screen switch, the help centre switch and recent articles
- Font and sounds - the owner's Google font, fetched at run time, and message sounds and sound packs (the visitor can turn Sound on or off in the chat menu)
- Behaviour - widget language, auto-open, the typing preview for agents, human touches, the post-chat rating and the post-chat redirect
Local Themes with ConferBotTheme
Built-in defaultTheme (light) and darkTheme are ready to use: ChatWidget(theme: darkTheme). For a brand theme, start from a built-in and override with copyWith:
- ConferBotColors - colour slots such as
primary,headerBg,userBubbleandbotBubble, overridable viacolors.copyWith(...) - ConferBotTypography / ConferBotSpacing - text styles and spacing scales
- ConferBotBorderRadius - for example
ConferBotBorderRadius(bubble: 20.0)for bubble roundness - ConferBotShadows / ConferBotAnimations / ConferBotLayout - elevation, motion and layout tokens
ConferBotCustomization(fontFamily:) sets the font used while the owner's font loads, or when the bot sets none.
Precedence, Exactly
From ChatWidget.build: if the server sent customizations, serverTheme is used and your local theme: is ignored for the chat; if the server sent nothing (for example offline before the first fetch), your local theme applies; otherwise the default light theme applies. If you want your own branding to win, leave the colours at their defaults in the bot's appearance settings and pass a local theme.
Code-Level Overrides
ConferBotConfig(widgetLanguage: 'de')- fix the SDK's languageConferBotConfig(disablePostChatRedirect: true)oronPostChatRedirect: (url) { ...; return true; }- turn off or handle the post-chat redirect yourselfConferBotConfig(locationProvider: ...)- plug in a location plugin (for example geolocator) for "Use my location" on the address stepChatWidget(showKnowledgeBase: false)- hide the help centre in this chat regardless of the dashboard
Event Hooks and Custom UI Building Blocks
React to chatbot events with provider.on(...) for raw socket events, and provider.onWidgetSignal for the waiting signals WidgetSignals.waitingForHuman, humanJoined and waitOver. For custom layouts, the SDK exports its building blocks individually: ChatHeader, MessageList, SimpleMessageList, MessageBubble, ChatInput, ChatBottomBar, TypingIndicator, ConnectionStatus, OfflineIndicator, Avatar, EmptyState, and the NodeRenderer for interactive flow steps.
Flutter Chatbot State Management
The Conferbot SDK keeps all chat state on one ChangeNotifier, so it fits whichever state management approach your app already uses.
Provider Pattern (Native)
Provider is the SDK's native pattern: ConferBotProvider is a standard ChangeNotifier, created inside a ChangeNotifierProvider (or MultiProvider alongside your other app providers). Useful getters include record (the message list), unreadCount (for badges on tab bars or navigation rails), isConnected, currentAgent, currentUIState (the step waiting for an answer), isFlowComplete, serverTheme, homeModel and requestsUnread. Widgets that watch the provider rebuild as the conversation progresses. ChatWidget and ConferBotFAB must sit below the provider; when pushing a new route, re-provide it with ChangeNotifierProvider.value(value: context.read<ConferBotProvider>(), child: ...).
Riverpod Pattern
For apps using Riverpod, wrap the SDK's ChangeNotifier the standard way: final conferbotProvider = ChangeNotifierProvider((ref) => ConferBotProvider(apiKey: '...', botId: '...')), then ref.watch(conferbotProvider) in your widgets. You can derive narrower providers (for example one that selects only unreadCount) to limit rebuilds. Actions like openChat() and sendMessage() return Futures.
BLoC Pattern
For BLoC apps, bridge the SDK by listening to its events (provider.on(...) for socket events, provider.onWidgetSignal for waiting signals) and mapping them to your own typed BLoC events, or by listening to the ChangeNotifier and emitting state snapshots. With Cubit, the provider's methods (sendMessage, submitResponse, initiateHandover) map naturally to Cubit methods.
GetX and MobX Patterns
For GetX, create a ChatController extends GetxController that holds the ConferBotProvider, listens to it with addListener and exposes .obs variables. For MobX, create a ChatStore with @observable fields synced from the ChangeNotifier. Both work because the SDK exposes standard Dart primitives: a ChangeNotifier, Futures and event callbacks.
State Architecture Recommendations
| State Management | SDK Integration Pattern | Best For |
|---|---|---|
| Provider | ConferBotProvider in ChangeNotifierProvider (native) | Simple apps, the SDK's default |
| Riverpod | ChangeNotifierProvider wrapping ConferBotProvider | Apps already using Riverpod for dependency injection |
| BLoC | SDK events mapped to BLoC events | Apps with strict event/state separation |
| GetX | GetxController listening to the ChangeNotifier | Apps already built on GetX |
| MobX | Store with @observable sync from ChangeNotifier | Teams used to MobX |
Whichever pattern you choose, the chatbot state goes through your existing architecture. For architecture guidance, see our chatbot building guide or browse chatbot templates for common in-app patterns.
Flutter Chatbot on Web & Desktop
Flutter can compile one codebase to Web and Desktop as well as iOS and Android. Here is what the Conferbot Flutter SDK supports today, and what to use elsewhere.
Supported Targets: iOS and Android
The Conferbot Flutter SDK is built, tested and supported for iOS (13.0+) and Android (API 24+). The example app and the recorded end-to-end demo run on Android against production, and the same code runs on iOS. One ConferBotProvider and ChatWidget integration covers both app stores.
Web and Desktop Are Not Supported Targets
The SDK has no native code of its own, but it relies on plugins for audio, video, recording, file picking, permissions and storage, and it is tested only on iOS and Android. Flutter Web, macOS, Windows and Linux builds are not supported today, so do not ship the SDK to those targets.
What to Use on Web Today
For the web, use the Conferbot website widget: a one-line script embed with the same flow engine, theming and live chat. Both the web widget and the Flutter SDK are driven by the same bot and dashboard settings, so a Flutter mobile app plus the web widget still means one bot, one design, every surface.
Cross-Platform Responsive Design
On phones and tablets the SDK uses Flutter's standard layout: the launcher opens the chat in a draggable bottom sheet at 92% of the screen height, and ChatWidget can be pushed full screen or placed in any layout, including split panes on tablets, because it is an ordinary widget in your tree.
Deployment Matrix
| Surface | Recommended Conferbot Integration | Notes |
|---|---|---|
| iOS app (Flutter) | conferbot_flutter SDK | Supported, iOS 13.0+ |
| Android app (Flutter) | conferbot_flutter SDK | Supported, API 24+ |
| Web | Website widget | Same bot, flow engine and theming |
| Desktop (Flutter) | Not supported by the SDK | Not a tested target |
| Native iOS / Android apps | iOS SDK / Android SDK | For non-Flutter native codebases |
| React Native apps | React Native SDK | Same feature set, TypeScript |
For teams deploying to several platforms, Conferbot removes the need to build a bot per surface: the same flow, knowledge base and live chat inbox power the Flutter SDK, the web widget and every messaging channel through omnichannel.
Flutter Chat Push Notifications
When an agent or the AI replies while the visitor is not in the chat (the app is in the background or closed), the Conferbot server can send a push: FCM on Android, APNs on iOS. The SDK takes a thin approach: your app owns the push plugin and hands the SDK a token, and push stays off until it does.
How Registration Works
await provider.setPushToken(token, PushTokenType.fcm);
The token is registered with the current conversation (with its chatSessionId and token type), again for each new conversation, and unregistered on identify(null), clearAllPersistedData(), clearCurrentSession() and unregisterPush(). Without a type, a 64-character hex token is taken as APNs. The older registerPushToken(token) still works as an alias.
Firebase Cloud Messaging Setup (Typical Path)
- Add Firebase to your project - use the FlutterFire CLI:
flutterfire configure - Add the dependency -
firebase_messagingin pubspec.yaml - Request permission -
FirebaseMessaging.instance.requestPermission() - Pass the token -
getToken(), thenprovider.setPushToken(token, PushTokenType.fcm), and again ononTokenRefresh - Forward notifications -
onMessageOpenedAppandgetInitialMessage()toprovider.handlePushNotification(m.data); foreground messages withopen: falseso they count as unread
Opening the Right Conversation
handlePushNotification returns true when the notification is this bot's Conferbot message, and opens its conversation: the chat, or that conversation in "Your requests". A tap that started the app is opened once start-up is done. Outside the provider, ConferbotPush.parse(data) and ConferbotPush.isConferbot(data) tell you whether a notification is Conferbot's.
Displaying Notifications
The SDK draws no notifications itself. On Android the server sends on the channel conferbot_messages (pushChannelId); create that channel in your app, for example with flutter_local_notifications, so visitors can control it. There is one notification per conversation.
iOS-Specific Configuration
- Enable the Push Notifications capability in Xcode (Runner target)
- Generate an APNs Authentication Key (p8) in your Apple Developer account
- If you relay through FCM, upload the p8 key to the Firebase Console and pass
PushTokenType.fcm
Delivery Is Enabled Per Deployment
Push support is built into the SDK, but sending is switched on per Conferbot deployment, with that deployment's FCM and APNs credentials. Until it is on for your app, tokens register but no pushes are sent. Contact us if you want push for your app.
Unread State In-App
While the app is in the foreground you often do not need a system notification: watch provider.unreadCount for badge chips in your navigation, and the ConferBotFAB bubble shows its red unread badge automatically.
For the complete mobile engagement strategy, see our customer engagement guide. Compare notification capabilities across Android, iOS, and React Native SDKs on our comparison page.
Advanced Flutter Chat Widget Theming
Beyond colours, the Conferbot Flutter SDK gives design-conscious teams a token system, dashboard-driven launcher styling, and detailed configuration of the chat itself.
The Full ConferBotTheme Token System
ConferBotTheme is made of seven token groups, all with copyWith overrides: ConferBotColors, ConferBotTypography, ConferBotSpacing, ConferBotBorderRadius, ConferBotShadows, ConferBotAnimations and ConferBotLayout. Start from defaultTheme or darkTheme and override only what your brand needs.
Dark Mode
With the dashboard's appearance set to auto, the chat follows the phone's dark mode, including when it changes while the chat is open; some themes (Midnight, Neon, Chalkboard, Cyberpunk, Space) are always dark. For a local theme, pass darkTheme (or your own dark ConferBotTheme) to ChatWidget(theme: ...). Remember the precedence rule: when the bot has dashboard customizations, serverTheme wins over any local theme.
Dashboard-Driven Launcher Styling
These dashboard settings are read live from the server and override ConferBotFABConfig: widgetIconBgColor (bubble colour, falling back to headerBgColor, default #1B55F3), widgetSize, widgetPosition (left/right), widgetOffsetLeft / widgetOffsetRight / widgetOffsetBottom, widgetBorderRadius, widgetIconSVG, the greeting card settings (greetingStyle, greetingRules, greetingFrequency and more) and the mascot settings (mascotShape, mascotEyes, mascotAccessory, mascotColor, mascotName). The local config carries only fallbacks such as size, position and offsets. With the phone's animations turned off, nothing moves.
Configuring the Chat Surface
ChatWidget exposes switches such as title and placeholder text, showTimestamps, enableAttachments, showKnowledgeBase (null follows the owner's switch), showOfflineIndicator and showDeliveryStatus, and pagination (enablePagination, paginationConfig).
Behavior Configuration (ConferBotConfig)
The provider-level ConferBotConfig controls SDK behaviour: enableOfflineMode, autoConnect, reconnection attempts and delay, enablePagination and paginationConfig, enableAnalytics, enablePersistence and sessionTimeout (30 minutes by default), widgetLanguage, disablePostChatRedirect, onPostChatRedirect and locationProvider.
Custom Endpoints and Network Tuning
By default the SDK talks to https://wdt.conferbot.com. Point it at another embed server globally with ConferBotEndpoints.configure(apiBaseUrl: ..., socketUrl: ...), or per provider via the baseUrl / socketUrl constructor parameters. Timeouts and retry policy are tunable through ConferBotNetworkConfig.configure(...). HTTPS is expected in production.
Flutter Chatbot Performance Optimization
Chat UIs bring their own performance challenges: long scrollable lists, frequent state updates from incoming messages, media-heavy conversations and a background WebSocket connection. Here is how the Conferbot SDK handles each, and what you can tune.
Built-In Message Pagination
The message list loads history in pages instead of building whole conversations at once. Pagination is on by default (enablePagination: true) and tunable via paginationConfig on the provider and ChatWidget. In headless UIs, call provider.loadMoreMessages() when the user scrolls near the top, read provider.paginatedMessages, and check provider.hasMoreMessages; ChatWidget wires all of this for you.
Efficient Rebuilds via ChangeNotifier
All state goes through a single ChangeNotifier, so you control rebuild scope with standard Flutter tools: context.select to watch one getter (for example only unreadCount), Consumer scoping, or derived providers. The bundled widgets are ordinary Flutter widgets drawn by Flutter's own engine.
Persistence Without Jank
Session persistence uses Hive, a pure-Dart key-value store, initialized once before runApp (StorageService.init()). Call provider.persistState() on app pause to force a save, and inspect provider.getStorageStats() when profiling. If your app does not need persistence, turn it off (enablePersistence: false) and skip storage initialization.
Analytics Batching
Analytics events are batched and uploaded on an interval (analyticsFlushInterval, 30 seconds by default) rather than sent one by one. Force an upload with provider.flushAnalytics(), for example before logout.
WebSocket Connection Management
The SDK keeps one Socket.IO connection per client with automatic reconnection. On reconnect, queued messages are sent and the conversation carries on at its current step. Tune reconnection attempts and delays with ConferBotNetworkConfig.configure(reconnectionAttempts: ..., reconnectionDelay: ...) or the ConferBotConfig equivalents, and raise API timeouts for slow networks.
Respecting Reduced Motion
Launcher motion, greeting card effects, confetti and rating sparks are skipped when the phone's animations are turned off (MediaQuery.disableAnimations), and nothing on the launcher moves while the chat is open.
Profile on your own target devices with Flutter DevTools, as you would for any screen in your app. For a comparison with the React Native SDK, see the Flutter vs React Native section below.
Flutter vs React Native for Chatbot Integration
Choosing between Flutter and React Native for your app, and so which chatbot SDK to use, is an architectural decision. Both Conferbot SDKs reached web widget parity in version 2.0.0, so the choice comes down to your team's language, ecosystem and existing codebase.
Language and Developer Experience
Flutter uses Dart, with strong typing, hot reload and the pub.dev package ecosystem. React Native uses JavaScript or TypeScript; if your team already has React web developers, it offers a shorter learning curve. The Conferbot React Native SDK ships complete TypeScript definitions.
Rendering Architecture
Flutter draws every pixel with its own engine, so the chat looks the same on iOS and Android. React Native renders with the platform's own views, so the UI can differ slightly between platforms but follows platform conventions more closely. Both Conferbot SDKs draw the chat natively, with no WebView.
Platform Support
Both Conferbot SDKs are built and supported for iOS and Android. For the web, use the Conferbot website widget on either stack.
Ecosystem and Dependencies
The Flutter SDK is a Dart package with no native code of its own; it depends on common plugins (audio, video, recording, file picking, storage), so iOS needs a pod install. The React Native SDK is plain TypeScript with no native code of its own; optional packages such as AsyncStorage and react-native-svg switch on persistence, launcher graphics and more.
Feature Comparison for Chat
| Feature | Conferbot Flutter SDK | Conferbot React Native SDK |
|---|---|---|
| Install | conferbot_flutter: ^2.0.0 (pub.dev) | npm install @conferbot/react-native |
| Minimums | Flutter 3.10, Dart 3, iOS 13, Android API 24 | React 17, React Native 0.70 |
| Flow step types | All 82 | All 82 |
| AI agent, handover, help centre, home screen, Your requests | Yes | Yes |
| Widget languages | English, Dutch, French, German, Spanish | English, Dutch, French, German, Spanish |
| Session persistence | Hive (built in) | AsyncStorage (optional package) |
| Offline queue | Built in | Built in |
| State | ChangeNotifier (Provider-native) | React hooks and context (useConferBot) |
Both SDKs connect to the same Conferbot backend and share the same feature set: the launcher, dashboard theming, the flow engine, the AI agent, live chat handover, offline queueing, session persistence and opt-in push. The deciding factor is ecosystem fit: Dart teams choose Flutter, JavaScript and TypeScript teams choose React Native.
When to Choose Flutter + Conferbot
- Your team uses Dart and the Flutter ecosystem
- You want the chat to look the same on iOS and Android
- You want session persistence, voice messages and media viewers with no extra packages to choose
- You manage app state with Provider, Riverpod, Bloc, GetX or MobX
When to Choose React Native + Conferbot
- Your team has JavaScript or TypeScript experience from web development
- Your app already uses AsyncStorage and the React Native ecosystem
- You want a TypeScript-only package with no native code of its own
- You prefer React hooks for state (useConferBot)
Whatever the framework, both SDKs use the same visual chatbot builder, AI engine, live chat and analytics. You can deploy the same chatbot to Flutter and React Native apps, plus your website and messaging channels, through Conferbot's omnichannel platform.
In-App Chatbot Use Cases
Flutter apps span every industry. Here are effective chatbot integrations for common Flutter app categories.
E-Commerce Apps
Product discovery, size and compatibility guides, order tracking, returns and recommendations, with product cards and carousels drawn natively in the chat. Explore e-commerce chatbot solutions.
FinTech and Banking
Account questions, transaction explanations, fraud reports and loan applications. The SDK talks to Conferbot over HTTPS, masks card numbers, bank accounts, government IDs and passwords in stored and sent answers (unless the owner turns this off), and supports identity verification for signed-in users. Explore banking chatbot solutions.
Healthcare and Telemedicine
Appointment booking with already-booked slots greyed out, pre-visit questionnaires, provider search and answers from your help centre, with a handover to staff when a person is needed. Explore healthcare apps.
Education and EdTech
Course navigation, assignment help, schedule questions, enrollment support and interactive quizzes. See education apps.
On-Demand Services
Ride-hailing, food delivery and home services handle many status questions, complaints and booking changes. A chatbot resolves the simple cases at once and routes complex issues to live agents, with the queue and wait shown in the app. Explore logistics chatbot solutions.
SaaS and Productivity
Feature guidance, troubleshooting, upgrade prompts and feedback collection, with an AI agent that answers from your help centre and cites its sources. Explore SaaS chatbot solutions.
Troubleshooting: the errors Flutter developers hit
| Symptom | Usual cause | Fix |
|---|---|---|
HiveError or a crash on start-up | StorageService.init() was not awaited before runApp | Call it after WidgetsFlutterBinding.ensureInitialized(), or set enablePersistence: false |
ProviderNotFoundException when the chat opens | ChatWidget or ConferBotFAB is outside the provider, usually in a pushed route or sheet | Wrap it in ChangeNotifierProvider.value(value: context.read<ConferBotProvider>(), ...) |
| Build fails on minSdk or the iOS deployment target | The plugin floor is Android API 24 and iOS 13 | Raise both, then cd ios && pod install |
| Works in debug, not in a release APK | No INTERNET permission in the main manifest | Add it to src/main/AndroidManifest.xml |
| The chat opens empty | The bot is not published, or the bot ID is wrong (it fails silently) | Publish; copy the id from Mobile apps; try the demo bot 691c970890527a0468f9b2c9 |
| Cannot reach a local server | The Android emulator's localhost is the emulator | Use 10.0.2.2; plain HTTP needs cleartext on Android and an ATS exception on iOS, in debug only |
| Voice recording does nothing on iOS | Missing microphone permission setup | NSMicrophoneUsageDescription plus PERMISSION_MICROPHONE=1 for permission_handler |
| My theme colours are ignored | Server customizations override a local theme | Expected; see the theming section |
| The chat opens on a home screen | The owner turned the home screen on | Turn it off in the dashboard, or call provider.home.showChat() |
When the same bot works on the website and not in the app, the causes that are not Flutter-specific (an unpublished bot, a wrong id, a network block) are the ones in why a chat widget does not show on a website.
Build your own with an LLM API, or use an SDK?
A Flutter chat screen is a ListView and a TextField. A support assistant people trust is everything behind it, and that is where the two routes really differ.
| Your own widgets + LLM API | Chat SDK + hosted bot | |
|---|---|---|
| Chat screen | You build it, or use a chat UI package | Included, Flutter widgets |
| Model key | Must live on your backend; never in the app | On the vendor's server; the app holds a bot ID |
| Answers from your docs | You build retrieval: chunking, embeddings, a vector store, citations | Upload or crawl documents in the dashboard |
| Structured steps (booking, forms, OTP, payment) | You build each | Native cards from the flow |
| Human handoff | You build an agent inbox, queue and notifications | Included, in the team's shared inbox |
| Changing behaviour | A release or a backend deploy | Edit in the dashboard; apps update on next connect |
| Best when | The chat is your product | The chat supports your product |
The do-it-yourself route, briefly
Popular starting points are flutter_chat_ui (with flutter_chat_core), a backend-agnostic chat UI, or plain widgets. Either way, the app should talk to your own backend, never to the model provider directly:
import 'dart:convert';
import 'package:http/http.dart' as http;
/// Your backend holds the model key, the system prompt and the retrieval.
Future<String> askAssistant(String text, String conversationId) async {
final res = await http.post(
Uri.parse('https://api.example.com/chat'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'text': text, 'conversationId': conversationId}),
);
if (res.statusCode != 200) throw Exception('Assistant error ${res.statusCode}');
return (jsonDecode(res.body) as Map<String, dynamic>)['reply'] as String;
}
Anything compiled into an app can be extracted, so a model key in Dart code is a public key. Treat what users type as untrusted input to the model, too: prompt injection and chatbot security covers why. Choosing an LLM for your chatbot and RAG vs fine-tuning cover the backend decisions, and the real cost of implementing a chatbot puts numbers on the engineering time.
Getting Started
Here is the path from an empty project to a chatbot in your Flutter app.
Quick Start
- Design your chatbot in the Conferbot visual builder and publish it. An unpublished bot serves no flow
- Add the dependency -
conferbot_flutter: ^2.0.0andproviderin pubspec.yaml, thenflutter pub get - Initialize storage and the provider -
await StorageService.init()before runApp, then aChangeNotifierProvidercreatingConferBotProvider(apiKey: 'conf_placeholder', botId: 'YOUR_BOT_ID'). The bot ID is the credential - Add the chat UI -
ConferBotFAB/ConferBotFABScopefor the floating launcher, or pushChatWidgetyourself - Customize in the dashboard - themes, colours, launcher, greeting card, font, sounds and language apply automatically; pass a local
ConferBotThemeas a fallback - Sign users in (optional) - pass a
ConferBotUseror callidentify(user), with a server-madehashfor identity verification - Test on both stores - verify on iOS and Android devices and emulators, including offline behaviour
No account yet? The public demo bot ID 691c970890527a0468f9b2c9 works without a Conferbot account (any placeholder apiKey); it is the bot the example app ships with. For the full walkthrough, follow the Flutter SDK deep guide on the developer portal.
Package Details
The Conferbot Flutter SDK is the Dart package conferbot_flutter on pub.dev (current version 2.0.0, Apache 2.0 licence), with source on GitHub. It requires Flutter 3.10+ and Dart 3.0+, and your app needs iOS 13.0+ and Android API 24+. The repository includes full documentation (README, USAGE, API, ARCHITECTURE, COMPONENTS, EXAMPLES and PARITY) and a CHANGELOG, and the package follows semantic versioning. It has no native code of its own; the minimum OS versions come from the plugins it uses.
Comparison: Flutter Chatbot SDK Options
When choosing how to add chat to your Flutter app, the main options are a native Flutter SDK or a web chat widget inside a WebView:
| Criteria | Conferbot Flutter SDK | WebView Embed |
|---|---|---|
| Implementation | Native Flutter widgets | A web page inside the app |
| No-Code Bot Builder | Full visual builder + AI agent | Depends on provider |
| Flow steps | All 82 step types, native step cards | Web rendering inside a frame |
| Theming | Dashboard themes plus a local token system | Web styling only |
| Offline Support | Built-in message queue | Lost if the page cannot load |
| Push Notifications | FCM / APNs token, opens the conversation on tap | No system push from the web view |
| Voice Messages | Built-in recorder and player | Depends on the browser view |
| Omnichannel | Website, WhatsApp, Messenger and every channel | Depends on provider |
| Pricing | On every plan, including Free | Varies |
| Calendar Booking | Built in, with booked slots shown as taken | Varies |
For teams that chose Flutter for cross-platform simplicity, the Conferbot SDK keeps that promise in the chat layer: one package, one provider, both stores. See pricing and platform comparisons for details.
Why Native SDK Over WebView
| Aspect | Flutter SDK (Native) | WebView Chat |
|---|---|---|
| Rendering | Native Flutter widgets | A web page inside the app |
| Push Notifications | FCM/APNs integration | Not possible |
| Offline Support | Local message queuing | Fails silently |
| Theming | Dashboard themes + full local token system | CSS-only customization |
| Node Rendering | All 82 flow step types, native widgets | Web rendering inside a frame |
| App Store Compliance | Native widgets preferred | May face review issues |
Omnichannel Ready
Your Flutter chatbot is part of Conferbot's omnichannel platform. The same bot you deploy in your app works on your website, WhatsApp, Messenger, and other channels, and every conversation lands in the same team inbox.
Why Conferbot Flutter SDK
- One codebase, both stores - iOS and Android from a single Dart integration
- Web widget parity - all 82 flow step types, the AI agent, live chat, the home screen, help centre and Your requests
- Floating launcher - the web widget's launcher, greeting card and mascot, styled from your dashboard with no code
- Your look and language - 27 widget themes with dark mode, your colours, font and sounds, in five languages
- Voice, media, and markdown - recording and playback, media viewers and formatted bot replies built in
- State management agnostic - a standard ChangeNotifier that works with Provider, Riverpod, Bloc, GetX or MobX
- Offline support - a local message queue, reconnect, and session persistence via Hive
- Push notifications - opt-in, with FCM or APNs tokens your app passes
- AI-powered - AI knowledge base and OpenAI for intelligent in-app support
- Omnichannel - same bot on website, WhatsApp, Messenger, and more
- Analytics - track in-app engagement with built-in analytics
The Flutter SDK is included on every plan, including Free. View pricing for details, or start building your chatbot flows today and add Flutter integration when your app is ready. See how Conferbot compares to other chatbot platforms for mobile SDK capabilities.
How Conferbot Compares for Flutter
Most platforms charge per message, per seat, or limit channels by tier. Here's how Conferbot is different.
| Feature | Conferbot | Typical Competitor |
|---|---|---|
| Channels included | 8 (all plans) | 3-6 (varies by tier) |
| Pricing model | Flat rate from $19/mo | Per-seat or per-message |
| AI chatbot builder | Yes (plain English) | No or limited |
| Native mobile SDKs | 4 (Android, iOS, Flutter, RN) | None (WebView only) |
| Knowledge base AI | Included | Add-on ($30-99/mo) |
| Live chat handoff | Included | Higher tiers only |
| Calendar booking | Built-in | Third-party required |
| Setup time | Under 10 minutes | Hours to days |
Flutter FAQ
Everything you need to know about chatbots for flutter.
Continue Exploring
Explore features, connect third-party tools, and browse ready-made templates.
Deep-dive pillar guides, real use cases, and the chatbot & AI glossary.
Pairing your Flutter app with messaging channels? The webhook debugging guide covers delivery failures across every platform, and the error code directory documents 325 platform error codes with causes and fixes.