aaroh_chat 1.2.1+2 copy "aaroh_chat: ^1.2.1+2" to clipboard
aaroh_chat: ^1.2.1+2 copied to clipboard

Flutter chat SDK by Aaroh for AI-powered conversations, featuring built-in NLP, Claude API integration, and branding options.

aaroh_chat #

pub.dev License: MIT

A plug-and-play Flutter chat SDK โ€” add a fully branded AI assistant to your app in 5 minutes.

Built by Aaroh AI ยท Powered by Aaroh shown in every widget.


Features #

  • ๐Ÿ’ฌ 3-screen UI: Chat ยท History ยท Language
  • ๐Ÿข Company branding: Your name + logo in the header
  • ๐Ÿง  Built-in engine: Works offline, no API key needed
  • ๐Ÿค– Claude API support: Plug in your Claude key for smarter responses
  • ๐Ÿ“š Knowledge base: Feed company data โ€” bot answers from it
  • ๐ŸŒ Multilingual: English / Hindi / Hinglish
  • ๐Ÿ’พ Chat history: Auto-saved locally on device
  • ๐ŸŽ™๏ธ Voice input: Mic support built in
  • โšก Streaming: Real-time token streaming for Claude

Installation #

# pubspec.yaml
dependencies:
  aaroh_chat: ^1.2.1+1
flutter pub get

Quick Start #

Option 1 โ€” Full widget (new screen) #

import 'package:aaroh_chat/aaroh_chat.dart';

// Inside your widget tree:
AarohChatWidget(
  config: AarohConfig(
    companyName: 'MyCompany',
  ),
)

Option 2 โ€” Navigate to chat #

import 'package:aaroh_chat/aaroh_chat.dart';

ElevatedButton(
  onPressed: () => pushAarohChat(
    context,
    config: AarohConfig(companyName: 'MyCompany'),
  ),
  child: const Text('Open Chat'),
)

AarohConfig Reference #

Parameter Type Description
companyName String โœ… Your company/product name (shown in header)
companyLogoUrl String? URL of your company logo
claudeApiKey String? Claude API key โ€” enables AI mode
knowledgeBase List<Object> (String/KnowledgeItem) Company info, FAQs, product docs โ€” see Knowledge Base Format
searchEngineData List<Object> (String/KnowledgeItem) Same format as knowledgeBase, separate list for your own organization
knowledgeMatchThreshold int Built-in engine: min keyword overlap to trigger a knowledge answer (default 1)
topics List<TopicRule> Rule-based replies โ€” "if user asks X, reply Y", with optional deep-link action. See Topics & Rule-Based Replies
support SupportConfig? Support email / Contact Us link / phone (phone shown only if asked). See Support Fallback
fallbackReply String? Shown in built-in engine mode when nothing else matches
botGreeting String? Custom welcome message
primaryColor String? Brand color hex e.g. '#E07A5F'
poweredByText String Footer text (default: 'Powered by Aaroh')

Knowledge Base Format #

knowledgeBase and searchEngineData both accept a List containing either:

  • Plain Strings โ€” quick and simple
  • KnowledgeItem objects โ€” structured, with categories and keywords for better matching

You can mix both freely in the same list.

Plain strings (simplest) #

knowledgeBase: [
  'ShopMart sells electronics, clothing, and home goods.',
  'We offer free delivery on orders above โ‚น500.',
  'Return policy: 30-day hassle-free returns.',
],
knowledgeBase: [
  KnowledgeItem(
    id: 'return-policy',          // optional, your own reference id
    question: 'What is your return policy?',
    answer: '30-day hassle-free returns, no questions asked.',
    category: 'Policies',         // optional, for your own organization
    keywords: ['refund', 'exchange', 'send back'], // optional, boosts matching
  ),
  KnowledgeItem(
    answer: 'ShopMart was founded in 2020 and ships across India.',
    // question/category/keywords are all optional โ€” this is just a fact
  ),
],
Field Required Purpose
id No Stable reference if you update/remove entries later
question No The question this answers โ€” omit for plain facts/docs
answer Yes The answer text or fact content
category No Grouping label, e.g. 'Pricing', 'Shipping'
keywords No Extra search terms beyond what's in question/answer

How it's used in each mode #

  • Claude API mode โ€” every entry (string or KnowledgeItem) is formatted and joined into Claude's system prompt automatically. Claude reasons over all of it.
  • Built-in engine mode (no claudeApiKey) โ€” each incoming message is keyword-matched against your knowledge base. If a confident match is found, the bot answers directly from that entry's answer instead of its generic wellness response. Tune sensitivity with knowledgeMatchThreshold (default 1 โ€” at least one matching keyword).
AarohConfig(
  companyName: 'ShopMart',
  knowledgeBase: [ /* ... */ ],
  knowledgeMatchThreshold: 2, // require 2+ overlapping keywords to trigger
)

Full example #

AarohChatWidget(
  config: AarohConfig(
    companyName: 'ShopMart',
    claudeApiKey: 'sk-ant-YOUR_KEY', // omit to use built-in engine
    knowledgeBase: [
      'ShopMart sells electronics, clothing, and home goods.',
      KnowledgeItem(
        question: 'What is your return policy?',
        answer: '30-day hassle-free returns, no questions asked.',
        category: 'Policies',
        keywords: ['refund', 'exchange'],
      ),
      KnowledgeItem(
        question: 'Do you offer EMI?',
        answer: 'Yes, on orders above โ‚น2000 via major banks.',
        category: 'Payments',
      ),
    ],
    botGreeting: 'Hi! I\'m ShopMart\'s assistant. Ask me anything!',
  ),
)

Topics & Rule-Based Replies #

For general questions that aren't facts (e.g. "what's your pricing?", "track my order"), define TopicRules โ€” "if the user asks about X, reply with Y", with an optional deep link.

topics: [
  TopicRule(
    triggers: ['pricing', 'plans', 'cost', 'how much'],
    reply: 'Here are our current plans:',
    action: MessageAction(label: 'View Pricing', route: '/pricing'),
  ),
  TopicRule(
    triggers: ['track order', 'where is my order'],
    reply: 'Let me pull that up for you.',
    action: MessageAction(label: 'Track Order', actionId: 'track_order'),
  ),
],

topics is checked first, before the knowledge base โ€” first matching rule wins.

MessageAction โ€” three ways to handle a tap #

Field Use for
route A named route in your own app (e.g. /pricing), pushed via Navigator.pushNamed. Works automatically with pushAarohChat (reuses your app's Navigator). With AarohChatWidget, pass your route table via its routes or onGenerateRoute param.
url An external link (e.g. https://yoursite.com/contact), opened in the browser.
actionId An arbitrary string passed to your own onAction callback โ€” run any custom logic.

You can set more than one โ€” onAction fires first, then route is tried, falling back to url if route doesn't resolve.

pushAarohChat(
  context,
  config: myConfig,
  onAction: (actionId) {
    if (actionId == 'track_order') {
      // your own logic โ€” open a bottom sheet, call an API, etc.
    }
  },
)

Support Fallback #

When a message looks support-related (e.g. "I need help", "this isn't working") and no TopicRule or knowledge entry matched, the bot uses SupportConfig:

support: SupportConfig(
  email: 'support@shopmart.com',        // shown by default
  contactUsUrl: 'https://shopmart.com/contact', // shown as a button if set
  phoneNumber: '1800-XXX-XXXX',         // shown ONLY if user explicitly asks for it
),
  • Email is always shown for support-style queries.
  • Contact Us link is shown as a tappable button if you set contactUsUrl.
  • Phone number is never shown proactively โ€” only when the user explicitly asks ("what's your number", "can I call you").

If nothing matches at all โ€” not a topic, not knowledge, not a support query โ€” fallbackReply is shown:

fallbackReply: "I'm not sure about that. Try asking about pricing, "
    "your order, or our return policy.",

If you don't set fallbackReply, a generic safe default is used instead.


Claude API Setup #

  1. Get your key at console.anthropic.com
  2. Pass it as claudeApiKey in AarohConfig
  3. Your knowledgeBase and searchEngineData are automatically injected into Claude's system prompt

Model used: claude-sonnet-4-6


Screens #

Screen How to access
Chat Main screen (default)
History ๐Ÿ• icon in AppBar top-right
Language ๐ŸŒ icon in AppBar top-right

Language Options #

Option Code
English LanguageTone.english
Hindi LanguageTone.hindi
Hinglish LanguageTone.hinglish

Publishing to pub.dev #

See PUBLISHING.md for step-by-step instructions.


License #

MIT ยฉ Aaroh AI

5
likes
150
points
64
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter chat SDK by Aaroh for AI-powered conversations, featuring built-in NLP, Claude API integration, and branding options.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, google_fonts, http, intl, provider, shared_preferences, speech_to_text, url_launcher, uuid

More

Packages that depend on aaroh_chat