beon_widget_sdk 1.0.5+1 copy "beon_widget_sdk: ^1.0.5+1" to clipboard
beon_widget_sdk: ^1.0.5+1 copied to clipboard

A fully-featured, customizable chat widget SDK for Flutter with real-time messaging support.

Beon Widget SDK #

A fully-featured, customizable chat widget SDK for Flutter with real-time messaging support via WebSocket (Laravel Reverb).

Features #

  • Real-time messaging via WebSocket (Laravel Reverb)
  • Visitor persistence across sessions
  • Pre-chat form for lead collection
  • Customizable theming and positioning
  • RTL/LTR language support
  • File attachments
  • Emoji picker
  • Sound notifications
  • Offline message caching
  • Pagination support
  • Polling fallback
  • Fullscreen mode support

Installation #

Add to your pubspec.yaml:

dependencies:
  beon_widget_sdk: ^1.0.0

Then run:

flutter pub get

Quick Start #

Basic Integration #

import 'package:flutter/material.dart';
import 'package:beon_widget_sdk/beon_widget_sdk.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Stack(
          children: [
            // Your app content
            MyMainContent(),

            // Beon Chat Widget (floating button + chat window)
            BeonChatWidget(
              config: BeonConfig(
                apiKey: 'your-api-key',
                primaryColor: Colors.indigo,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Fullscreen Mode #

For a fullscreen chat experience:

BeonChatWidget(
  config: BeonConfig(
    apiKey: 'your-api-key',
    fullScreen: true,
    headerTitle: 'Support Chat',
    headerSubtitle: 'We typically reply within minutes',
  ),
)

Web Embedding (via Script Tag) #

For web applications, you can read configuration from HTML script tags:

<script
  src="https://cdn.beon.chat/widget.js"
  data-api-key="your-api-key"
  data-color="#6366F1"
  data-position="bottom-right">
</script>
// In your Flutter web app
BeonChatWidget.fromScriptTag()

Configuration Options #

Option Type Default Description
apiKey String required Your Beon API key
primaryColor Color Cyan Primary theme color
position BeonPosition bottomRight Widget position on screen
headerTitle String? null Chat header title
headerSubtitle String? null Chat header subtitle
welcomeMessage String? null Initial welcome message
preChatFormEnabled bool true Show pre-chat form
preChatNameEnabled bool true Show name field in pre-chat form
preChatEmailEnabled bool false Show email field in pre-chat form
preChatPhoneEnabled bool true Show phone field in pre-chat form
preChatMessageEnabled bool true Show message field in pre-chat form
enableSounds bool true Enable notification sounds
enablePollingFallback bool false Fall back to polling if WebSocket fails
pollingInterval Duration 5 seconds Polling interval (when fallback enabled)
textDirection TextDirection ltr Text direction for RTL support
locale String 'en' Localization
fullScreen bool false Enable fullscreen mode
externalUserId String? null External user ID for identification

Widget Positions #

BeonPosition.bottomRight  // Default
BeonPosition.bottomLeft
BeonPosition.topRight
BeonPosition.topLeft

Customization #

Custom Theme #

BeonChatWidget(
  config: BeonConfig(
    apiKey: 'your-api-key',
    primaryColor: const Color(0xFF6366F1),
    headerTitle: 'Beon Support',
    headerSubtitle: 'How can we help you?',
  ),
)

RTL Support #

BeonChatWidget(
  config: BeonConfig(
    apiKey: 'your-api-key',
    textDirection: TextDirection.rtl,
    locale: 'ar',
  ),
)

Disable Pre-chat Form #

BeonChatWidget(
  config: BeonConfig(
    apiKey: 'your-api-key',
    preChatFormEnabled: false,
  ),
)

Architecture #

The SDK uses:

  • Flutter Riverpod for state management
  • Dio for HTTP networking
  • WebSocket (Laravel Reverb) for real-time messaging
  • SharedPreferences for local storage

Requirements #

  • Flutter SDK >= 3.22.0
  • Dart SDK >= 3.8.1

License #

MIT License - see LICENSE file.