flutter_chat2desk 1.0.0 copy "flutter_chat2desk: ^1.0.0" to clipboard
flutter_chat2desk: ^1.0.0 copied to clipboard

Flutter plugin for integrating Chat2Desk. Connect with your customers via popular messengers directly from your app.

flutter_chat2desk #

Flutter plugin for integrating Chat2Desk. Connect with your customers via popular messengers (WhatsApp, Telegram, VK, Instagram and more) directly from your app.

Features #

  • Real-time chat with your customers right inside your Flutter app
  • Type-safe platform communication between Dart, Kotlin (Android) and Swift (iOS) generated with Pigeon
  • Incoming and outgoing messages with attachments and buttons
  • Full-text search and query search across the message history
  • Sending client info (name, phone and custom fields)
  • Delivery status tracking and read receipts
  • Typing indicator and operator info
  • Error reporting via a dedicated stream

Platforms #

Platform Support
Android ✅ (minSdk 24)
iOS

Getting started #

Installation #

Add the dependency to your pubspec.yaml:

dependencies:
  flutter_chat2desk: ^1.0.0

Android setup #

The plugin uses Chat2Desk SDK under the hood. No additional permissions are required — just make sure your app's minSdkVersion is at least 24.

iOS setup #

No additional configuration is required.

Usage #

Create a Chat2Desk instance with your Settings and follow the lifecycle:

  1. init() — initialize the SDK with your credentials
  2. start() — start the chat session
  3. Listen to streams and interact with the chat
  4. stop() — stop the session
  5. dispose() — release the SDK resources
import 'package:flutter_chat2desk/flutter_chat2desk.dart';

final chat2desk = Chat2Desk(
  settings: Settings(
    authToken: 'YOUR_AUTH_TOKEN',
    baseHost: 'YOUR_BASE_HOST',
    wsHost: 'YOUR_WS_HOST',
    storageHost: 'YOUR_STORAGE_HOST',
  ),
);

// 1. Initialize
await chat2desk.init();

// 2. Listen to streams
chat2desk.connectionStatus().listen((status) {
  // ConnectionState.connecting, .connected, .closing, .closed
});

chat2desk.messages().listen((messages) {
  // List<Message>
});

chat2desk.operator().listen((operator) {
  // Operator? — name, avatar, typing
});

chat2desk.customFields().listen((fields) {
  // List<CustomField>
});

chat2desk.error().listen((error) {
  // Chat2DeskException
});

// 3. Start the session
await chat2desk.start();

// 4. Interact with the chat
await chat2desk.sendMessage(msg: 'Hello, Chat2Desk!');

// 5. Clean up
await chat2desk.stop();
await chat2desk.dispose();

API #

Settings #

Configuration required to initialize the plugin.

Field Type Description
authToken String Chat2Desk authorization token
baseHost String Base API host
wsHost String WebSocket host for real-time
storageHost String Storage host for attachments

Methods #

Method Description
init() Initializes the SDK with the provided Settings.
start({String? clientId}) Starts the chat session, optionally reusing a known clientId.
clientPhone() Returns the phone number of the current client.
sendMessage({required String msg, AttachedFile? attachedFile}) Sends a text message, optionally with an attached file.
resendMessage({required Message message}) Re-sends a previously failed message.
fetchMessages({bool? loadMore, bool? clear}) Fetches the message history.
fetchNewMessages() Fetches new messages.
read() Marks the current dialog as read.
delivery({String? id}) Confirms delivery of a message.
sendClientParams({required String name, required String phone, required Map<int, String> fieldSet}) Sends client name, phone and custom fields.
searchByQuery({required String query, SearchOptions? options}) Searches messages by query.
fullTextSearch({required String query}) Performs full-text search.
flushAll() Clears all local data and stops the session.
stop() Stops the chat session.
dispose() Releases the SDK resources.

Streams #

Stream Emits
connectionStatus() ConnectionState? changes.
messages() List<Message> on each chat update.
operator() Operator? — current operator info, including typing state.
customFields() List<CustomField> configured for the account.
error() Chat2DeskException when an error occurs.

Message #

A chat message with a convenient MessageExtension:

Message message = ...;

DateTime? date = message.date; // converts dateInt to DateTime
message.date = DateTime.now(); // and back

bool isIncoming = message.inMessage(); // true for income / ratingIn types
Field Type Description
id String Message id
realId int Real message id on the server
read ReadStatus unread / read
status DeliveryStatus sending, sent, delivered, notDelivered
text String? Message text
type MessageType income, outcome, auto, system, ratingIn, ratingOut, comment
dateInt int? Timestamp (milliseconds since epoch)
attachments List<Attachment>? Attached files
buttons List<Button>? Quick-reply buttons

Exceptions #

Chat2DeskException is a sealed class. Handle concrete subtypes for granular error handling:

Exception Meaning
NotInitializedException Called a method before init().
NotStartedException Called a method before start().
ClientIsNotAuthorizedException Client is not authorized.
MissedConnectionException Connection to the server was missed.
NetworkException Network failure (code contains the HTTP error code).
UnknownFieldSetException Sent custom field ids that are not configured (unknownFields).
MapperException Failed to map a native object to Dart.
UnknownException Unexpected error.

Example #

Check the example app for a complete chat implementation — a working chat screen with message list, input field, file attachments and connection state handling.

Changelog #

See the CHANGELOG for the release history.

License #

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

3
likes
160
points
92
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for integrating Chat2Desk. Connect with your customers via popular messengers directly from your app.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, meta

More

Packages that depend on flutter_chat2desk

Packages that implement flutter_chat2desk