Kindly Chat SDK for Flutter

pub package License: MIT

Kindly Chat SDK for Flutter - Customer support chat widget for iOS and Android applications.

Features

  • 🎨 Customizable themes and colors
  • 🔐 Authentication support with JWT tokens
  • 🌍 Multi-language support
  • 💬 Real-time chat with your customers
  • 📱 Native iOS and Android implementations
  • 🔔 Push notification support
  • 🎯 Trigger specific dialogues
  • 📊 Context data support

Requirements

  • Flutter >=2.0.0
  • iOS >=12.0
  • Android API Level >=21

Installation

Add kindly_sdk to your pubspec.yaml:

dependencies:
  kindly_sdk: ^1.0.0

Run flutter pub get to install the package.

iOS Setup

No additional setup required. The SDK will be automatically linked.

Android Setup

No additional setup required. The SDK will be automatically linked.

Usage

Basic Setup

import 'package:kindly_sdk/kindly.dart';

// Initialize the SDK
await KindlySDK.start(
  botKey: 'YOUR_BOT_KEY',
);

// Display the chat
await KindlySDK.displayChat();

Authentication

If your chat requires authentication, provide an auth token callback:

await KindlySDK.start(
  botKey: 'YOUR_BOT_KEY',
  authTokenCallback: () async {
    // Fetch your JWT token from your backend
    final token = await yourAuthService.getToken();
    return token;
  },
);

Custom Theme

Customize the chat appearance to match your brand:

await KindlySDK.setCustomTheme(
  background: Colors.white,
  botMessageBackground: Colors.grey[200],
  botMessageText: Colors.black,
  userMessageBackground: Colors.blue,
  userMessageText: Colors.white,
  buttonBackground: Colors.blue,
  buttonText: Colors.white,
  navBarBackground: Colors.blue,
  navBarText: Colors.white,
  inputBackground: Colors.grey[100],
  inputText: Colors.black,
);

Context Data

Send contextual information about the user or session:

await KindlySDK.setNewContext({
  'userId': '12345',
  'userName': 'John Doe',
  'email': '[email protected]',
  'plan': 'premium',
});

// Clear context when needed
await KindlySDK.clearNewContext();

Trigger Specific Dialogues

Start a conversation with a specific dialogue:

// Launch chat with a specific dialogue
await KindlySDK.launchChat(
  triggerDialogueId: 'welcome_dialogue',
);

// Or trigger a dialogue in an active chat
await KindlySDK.triggerDialogue('help_dialogue');

Push Notifications

iOS

// Set APNS device token
await KindlySDK.setAPNSDeviceToken(deviceToken);

// Handle notification
await KindlySDK.handleNotification(notificationData);

// Check if notification is from Kindly
bool isKindly = await KindlySDK.isKindlyNotification(notificationData);

Android

// Save FCM token
await KindlySDK.saveNotificationToken(fcmToken);

// Handle notification
await KindlySDK.handleNotification(remoteMessageData);

// Check if notification is from Kindly
bool isKindly = await KindlySDK.isKindlyNotification(remoteMessageData);

Other Features

// Check if chat is displayed
bool isDisplayed = await KindlySDK.isChatDisplayed;

// Enable verbose logging
await KindlySDK.setVerboseLogging(true);

// Enable crash reporting
await KindlySDK.setCrashReporting(true);

// Close chat
await KindlySDK.closeChat();

// End chat session completely
await KindlySDK.endChat();

API Reference

KindlySDK.start()

Initializes the SDK with your bot configuration.

Parameters:

  • botKey (required): Your Kindly bot key
  • languageCode (optional): Initial language code (e.g., 'en', 'no')
  • authTokenCallback (optional): Callback to provide JWT authentication token

KindlySDK.displayChat()

Shows the chat interface.

Parameters:

  • languageCode (optional): Override the default language
  • triggerDialogueId (optional): Start with a specific dialogue

KindlySDK.setCustomTheme()

Customizes the chat appearance.

Parameters: All parameters are optional Color values:

  • background: Main background color
  • botMessageBackground: Bot message bubble background
  • botMessageText: Bot message text color
  • userMessageBackground: User message bubble background
  • userMessageText: User message text color
  • buttonBackground: Button background color
  • buttonText: Button text color
  • navBarBackground: Navigation bar background
  • navBarText: Navigation bar text color
  • inputBackground: Input field background
  • inputText: Input field text color
  • And more...

KindlySDK.setNewContext()

Sets contextual data for the chat session.

Parameters:

  • context: Map<String, String> of key-value pairs

KindlySDK.triggerDialogue()

Triggers a specific dialogue in the chat.

Parameters:

  • dialogueId: The ID of the dialogue to trigger

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

kindly_sdk