🐦Mobile Apps Active Users

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.

Quick Answer

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.

Setup: 10 minutes
Cost: Free on every plan
Requires: Free Conferbot account
View All Channels
No credit card required
Free plan
Setup in minutes
Last updated: November 2026·Reviewed by Conferbot Team
Version 2.0.1

Install the Flutter SDK 2.0.1

Flutter 3.10+, Dart 3, Android API 24+, iOS 13+.

pubspec.yaml
dependencies:
  conferbot_flutter: ^2.0.1
  provider: ^6.1.1
Add the launcher
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await StorageService.init();
  runApp(const ConferBotFABScope(
    apiKey: 'conf_placeholder',
    botId: 'YOUR_BOT_ID',
    child: MyApp(),
  ));
}
Conferbot Flutter SDK on an Android emulator: home screen, AI answer from the help centre, and handover to an agent Full walkthrough with the install steps (MP4)
  • Conferbot Flutter SDK home screen with greeting, help search, Chat with us and recent articles
    Chat open on the home screen
  • Conferbot Flutter SDK AI agent answering a question about office hours, with help-centre sources and Helpful? feedback
    AI answer with sources
  • Conferbot Flutter SDK handing the chat to a team member named Sam, who joins and replies
    Handover to a person
✨POWERFUL FEATURES

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.

💼USE CASES

What Can You Build?

In-App Support

Embed a native chat experience that matches your Flutter app's design language perfectly. Users get help without leaving your app.

E-Commerce Assistant

Help users find products, compare options, and complete purchases through guided conversation flows.

Booking System

Handle reservations, appointment scheduling, and availability checks with calendar-integrated chat flows.

FAQ Bot

Answer common questions without users leaving the app, using your knowledge base as the source of truth.

Multi-Platform Deploy

Build once and launch the same chatbot in your iOS and Android apps. The same bot also runs on your website and messaging channels.

Guided Tutorials

Walk users through complex features with step-by-step conversational guides and interactive prompts. Boosts feature adoption across your app.

🚀STEP-BY-STEP GUIDE

Get Started in 7 Simple Steps

Follow this guide to connect your Flutter chatbot

1
Step 1

Add to pubspec.yaml: conferbot_flutter: ^2.0.0 (and provider)

2
Step 2

Run flutter pub get

3
Step 3

Call StorageService.init() before runApp

4
Step 4

Create a ConferBotProvider with your bot ID

5
Step 5

Wrap your home screen in ConferBotFAB, or use ConferBotFABScope

6
Step 6

Set minSdk 24 on Android and iOS 13 in your Podfile

Step 7 - Done!

Your Flutter chatbot is ready!

Start Building Today

Ready to Build Your Flutter Chatbot?

Join thousands of businesses automating Flutter conversations. Get started in just 10 minutes.

No credit card
Free plan
Cancel anytime
4.9/5 Rating
Businesses Worldwide Trust Conferbot

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.

Conferbot Flutter SDK architecture - pure Dart implementation with zero platform channels

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 = 24 in android/app/build.gradle, and add the INTERNET permission to the main AndroidManifest.xml (Flutter's template adds it only to the debug and profile manifests)
  • iOS - set platform :ios, '13.0' in the Podfile and run cd ios && pod install. For voice messages add NSMicrophoneUsageDescription and turn on PERMISSION_MICROPHONE for permission_handler; for file and photo steps add NSPhotoLibraryUsageDescription (and NSCameraUsageDescription if 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 ChatWidget as a route, re-providing the provider with ChangeNotifierProvider.value
  • Bottom sheet - show ChatWidget in your own showModalBottomSheet from any button
  • Home screen - when the owner turns it on in the dashboard, ChatWidget and the bubble open on it; steer it from code with provider.home.showChat(), showHelp() and showHome()
  • 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 HMAC hash for identity verification, and opt-in push with setPushToken and handlePushNotification.

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 ConferBotProvider and ChatWidget code covers both stores
Flutter chatbot SDK platform support matrix - one Dart codebase covering iOS and Android

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, userBubble and botBubble, overridable via colors.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 language
  • ConferBotConfig(disablePostChatRedirect: true) or onPostChatRedirect: (url) { ...; return true; } - turn off or handle the post-chat redirect yourself
  • ConferBotConfig(locationProvider: ...) - plug in a location plugin (for example geolocator) for "Use my location" on the address step
  • ChatWidget(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 ManagementSDK Integration PatternBest For
ProviderConferBotProvider in ChangeNotifierProvider (native)Simple apps, the SDK's default
RiverpodChangeNotifierProvider wrapping ConferBotProviderApps already using Riverpod for dependency injection
BLoCSDK events mapped to BLoC eventsApps with strict event/state separation
GetXGetxController listening to the ChangeNotifierApps already built on GetX
MobXStore with @observable sync from ChangeNotifierTeams 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

SurfaceRecommended Conferbot IntegrationNotes
iOS app (Flutter)conferbot_flutter SDKSupported, iOS 13.0+
Android app (Flutter)conferbot_flutter SDKSupported, API 24+
WebWebsite widgetSame bot, flow engine and theming
Desktop (Flutter)Not supported by the SDKNot a tested target
Native iOS / Android appsiOS SDK / Android SDKFor non-Flutter native codebases
React Native appsReact Native SDKSame 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)

  1. Add Firebase to your project - use the FlutterFire CLI: flutterfire configure
  2. Add the dependency - firebase_messaging in pubspec.yaml
  3. Request permission - FirebaseMessaging.instance.requestPermission()
  4. Pass the token - getToken(), then provider.setPushToken(token, PushTokenType.fcm), and again on onTokenRefresh
  5. Forward notifications - onMessageOpenedApp and getInitialMessage() to provider.handlePushNotification(m.data); foreground messages with open: false so 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.

Flutter vs React Native chatbot SDK comparison - framework-level differences

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

FeatureConferbot Flutter SDKConferbot React Native SDK
Installconferbot_flutter: ^2.0.0 (pub.dev)npm install @conferbot/react-native
MinimumsFlutter 3.10, Dart 3, iOS 13, Android API 24React 17, React Native 0.70
Flow step typesAll 82All 82
AI agent, handover, help centre, home screen, Your requestsYesYes
Widget languagesEnglish, Dutch, French, German, SpanishEnglish, Dutch, French, German, Spanish
Session persistenceHive (built in)AsyncStorage (optional package)
Offline queueBuilt inBuilt in
StateChangeNotifier (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

SymptomUsual causeFix
HiveError or a crash on start-upStorageService.init() was not awaited before runAppCall it after WidgetsFlutterBinding.ensureInitialized(), or set enablePersistence: false
ProviderNotFoundException when the chat opensChatWidget or ConferBotFAB is outside the provider, usually in a pushed route or sheetWrap it in ChangeNotifierProvider.value(value: context.read<ConferBotProvider>(), ...)
Build fails on minSdk or the iOS deployment targetThe plugin floor is Android API 24 and iOS 13Raise both, then cd ios && pod install
Works in debug, not in a release APKNo INTERNET permission in the main manifestAdd it to src/main/AndroidManifest.xml
The chat opens emptyThe 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 serverThe Android emulator's localhost is the emulatorUse 10.0.2.2; plain HTTP needs cleartext on Android and an ATS exception on iOS, in debug only
Voice recording does nothing on iOSMissing microphone permission setupNSMicrophoneUsageDescription plus PERMISSION_MICROPHONE=1 for permission_handler
My theme colours are ignoredServer customizations override a local themeExpected; see the theming section
The chat opens on a home screenThe owner turned the home screen onTurn 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 APIChat SDK + hosted bot
Chat screenYou build it, or use a chat UI packageIncluded, Flutter widgets
Model keyMust live on your backend; never in the appOn the vendor's server; the app holds a bot ID
Answers from your docsYou build retrieval: chunking, embeddings, a vector store, citationsUpload or crawl documents in the dashboard
Structured steps (booking, forms, OTP, payment)You build eachNative cards from the flow
Human handoffYou build an agent inbox, queue and notificationsIncluded, in the team's shared inbox
Changing behaviourA release or a backend deployEdit in the dashboard; apps update on next connect
Best whenThe chat is your productThe 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

  1. Design your chatbot in the Conferbot visual builder and publish it. An unpublished bot serves no flow
  2. Add the dependency - conferbot_flutter: ^2.0.0 and provider in pubspec.yaml, then flutter pub get
  3. Initialize storage and the provider - await StorageService.init() before runApp, then a ChangeNotifierProvider creating ConferBotProvider(apiKey: 'conf_placeholder', botId: 'YOUR_BOT_ID'). The bot ID is the credential
  4. Add the chat UI - ConferBotFAB / ConferBotFABScope for the floating launcher, or push ChatWidget yourself
  5. Customize in the dashboard - themes, colours, launcher, greeting card, font, sounds and language apply automatically; pass a local ConferBotTheme as a fallback
  6. Sign users in (optional) - pass a ConferBotUser or call identify(user), with a server-made hash for identity verification
  7. 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:

CriteriaConferbot Flutter SDKWebView Embed
ImplementationNative Flutter widgetsA web page inside the app
No-Code Bot BuilderFull visual builder + AI agentDepends on provider
Flow stepsAll 82 step types, native step cardsWeb rendering inside a frame
ThemingDashboard themes plus a local token systemWeb styling only
Offline SupportBuilt-in message queueLost if the page cannot load
Push NotificationsFCM / APNs token, opens the conversation on tapNo system push from the web view
Voice MessagesBuilt-in recorder and playerDepends on the browser view
OmnichannelWebsite, WhatsApp, Messenger and every channelDepends on provider
PricingOn every plan, including FreeVaries
Calendar BookingBuilt in, with booked slots shown as takenVaries

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

AspectFlutter SDK (Native)WebView Chat
RenderingNative Flutter widgetsA web page inside the app
Push NotificationsFCM/APNs integrationNot possible
Offline SupportLocal message queuingFails silently
ThemingDashboard themes + full local token systemCSS-only customization
Node RenderingAll 82 flow step types, native widgetsWeb rendering inside a frame
App Store ComplianceNative widgets preferredMay 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.

Why Conferbot

How Conferbot Compares for Flutter

Most platforms charge per message, per seat, or limit channels by tier. Here's how Conferbot is different.

FeatureConferbotTypical Competitor
Channels included8 (all plans)3-6 (varies by tier)
Pricing modelFlat rate from $19/moPer-seat or per-message
AI chatbot builderYes (plain English)No or limited
Native mobile SDKs4 (Android, iOS, Flutter, RN)None (WebView only)
Knowledge base AIIncludedAdd-on ($30-99/mo)
Live chat handoffIncludedHigher tiers only
Calendar bookingBuilt-inThird-party required
Setup timeUnder 10 minutesHours to days
Start Free - Deploy on Flutter in 10 minNo credit card required · Free plan available · See full comparison
❓FAQ

Flutter FAQ

Everything you need to know about chatbots for flutter.

🔍
Popular:

Version 2.0.0 of conferbot_flutter requires Flutter 3.10 or later and Dart 3.0 or later (below 4.0). Your app needs iOS 13.0+ and Android API 24 (Android 7.0)+, the minimums of the media and audio plugins the SDK uses. Install it from pub.dev with conferbot_flutter: ^2.0.0, and call await StorageService.init() before runApp for session persistence (on by default).

No. The SDK is built, tested and supported for iOS and Android only. Flutter Web and Desktop are not supported targets. For the web, use the Conferbot website widget, which runs the same bot, flow engine and theming.

Two layers. Your dashboard settings apply automatically and override local themes: the 27 widget themes with dark mode, header and bubble colours, chat background, corners, typing style, launcher, greeting card, font and sounds. Locally, pass a ConferBotTheme to ChatWidget - start from defaultTheme or darkTheme and override colours, typography, spacing and radii with copyWith. It applies when the bot sends no customizations. For full control, compose the exported building blocks (MessageList, ChatInput, NodeRenderer, ...) or go headless.

Yes. The SDK requires Dart 3, so its public API is fully null-safe and fits null-safe Dart projects with no extra work.

Offline support 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, and ChatWidget shows an offline banner with the pending count. Messages and the session are stored on the device with Hive and restored within the sessionTimeout (30 minutes by default); a restored session resumes at the step it was on.

Yes. ConferBotProvider is a standard ChangeNotifier provided through the provider package, so Provider apps use it natively. Riverpod wraps it in a ChangeNotifierProvider, BLoC maps its events (provider.on and provider.onWidgetSignal) to typed events, and GetX or MobX controllers can listen to it like any ChangeNotifier.

Your app owns the push plugin and hands the SDK a token. Get a token (for example with firebase_messaging, an FCM token on both platforms), pass it with await provider.setPushToken(token, PushTokenType.fcm), and forward notification taps to provider.handlePushNotification(data), which opens that conversation. The token is registered with each conversation. Push support is built in and opt-in; sending is switched on per Conferbot deployment, so contact us to enable it for your app.

The SDK has no native code of its own; it uses common Flutter plugins for audio, video, recording, file picking and storage, which your app may already include. Rendering uses Flutter's own engine, message history is paginated so long conversations do not build everything at once, and analytics uploads are batched (every 30 seconds by default). Measure the size and performance impact in your own app with Flutter DevTools.

Wrap your app content in ConferBotFAB (below a ConferBotProvider), or use ConferBotFABScope, which creates the provider for you. A tap opens the chat in a draggable bottom sheet, and a badge counts unread messages. The launcher's icon, colour, shape, style, size, position, motion, greeting card and mascot all come from your dashboard and override the local ConferBotFABConfig fallbacks, with no styling code needed.

Use the one that matches your app's framework. Both 2.0.0 SDKs connect to the same Conferbot backend and match the web widget: all 82 flow step types, the AI agent, live chat handover, the home screen, help centre, Your requests, five widget languages, offline queueing and opt-in push. Choose Flutter if your team uses Dart, and React Native for JavaScript or TypeScript teams. See the Flutter vs React Native section for a detailed breakdown.

2.0.0 brings the SDK to parity with the web widget: every flow step type (82) with native step cards, AI agent bots, the full live chat handover lifecycle, articles and games while visitors wait, the home screen, help centre and Your requests, the launcher with its greeting card and mascots, dashboard themes, fonts and sounds, five widget languages, the post-chat rating and redirect, identity verification and opt-in push. It has breaking changes for custom node handlers and push registration; the CHANGELOG lists each one with its migration.

Yes. The mobile SDKs, Flutter included, are available on every Conferbot plan, including Free. The package itself is open source under the Apache 2.0 licence on GitHub and published on pub.dev.

Add conferbot_flutter and provider to pubspec.yaml, call await StorageService.init() before runApp, create a ConferBotProvider with your bot ID through ChangeNotifierProvider, and wrap your home screen in ConferBotFAB. The bot's flow, AI agent and handoff are built and published in the Conferbot dashboard.

Yes, from one Dart codebase. The minimums come from the plugins the SDK uses: Android API 24 (Android 7.0) and iOS 13, with Flutter 3.10 and Dart 3.0 or later. Release builds on Android also need the INTERNET permission in the main manifest.

Session persistence uses Hive, which must be initialised before the SDK runs. Call await StorageService.init() after WidgetsFlutterBinding.ensureInitialized() and before runApp, or turn persistence off with ConferBotConfig(enablePersistence: false).

Explore Other Channels

Build once, deploy everywhere - connect to all major messaging platforms

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.