connect_x_flutter_livechat_sdk 1.1.3 copy "connect_x_flutter_livechat_sdk: ^1.1.3" to clipboard
connect_x_flutter_livechat_sdk: ^1.1.3 copied to clipboard

Live Chat SDK for Flutter

example/lib/main.dart

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ChatController.instance.initialize(
    token:
        "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImNvbm5lY3R4LmRldkBnbWFpbC5jb20iLCJ1c2VySWQiOiJuQ0VxVXhrcFJ3VmxxV1hSaWpBWSIsInN1YiI6Im5DRXFVeGtwUndWbHFXWFJpakFZIiwib3JnYW5pemVJZCI6IjAwMDBPcmdSQW5kRENvbm5lY3RYIiwic3RheUxvZ2luIjpmYWxzZSwiY3VzdG9tVG9rZW4iOiJleUpoYkdjaU9pSlNVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUpvZEhSd2N6b3ZMMmxrWlc1MGFYUjVkRzl2Ykd0cGRDNW5iMjluYkdWaGNHbHpMbU52YlM5bmIyOW5iR1V1YVdSbGJuUnBkSGt1YVdSbGJuUnBkSGwwYjI5c2EybDBMbll4TGtsa1pXNTBhWFI1Vkc5dmJHdHBkQ0lzSW1saGRDSTZNVGN6TmpRNE9UZzFOeXdpWlhod0lqb3hOek0yTkRrek5EVTNMQ0pwYzNNaU9pSm1hWEpsWW1GelpTMWhaRzFwYm5Oa2F5MW5aek00TWtCamIyNXVaV04wTFhndGNISnZaSFZqZEdsdmJpNXBZVzB1WjNObGNuWnBZMlZoWTJOdmRXNTBMbU52YlNJc0luTjFZaUk2SW1acGNtVmlZWE5sTFdGa2JXbHVjMlJyTFdkbk16Z3lRR052Ym01bFkzUXRlQzF3Y205a2RXTjBhVzl1TG1saGJTNW5jMlZ5ZG1salpXRmpZMjkxYm5RdVkyOXRJaXdpZFdsa0lqb2lZMjl1Ym1WamRIZ3VaR1YyUUdkdFlXbHNMbU52YlNJc0ltTnNZV2x0Y3lJNmV5SnZjbWRKWkNJNklqQXdNREJQY21kU1FXNWtSRU52Ym01bFkzUllJbjE5LlN5b3hzZjRqUlh1RkxOM2laa2ZBSDlOdGJKRGpFd3EwdWpkV3d5ZHE1cnQ4a1JCTlZncFQwWjVSX3VpSENZWXFSVVlDeFJTZjlSWmlEd0JZR3padGR4dFEweXhPd05zTVhGYVludHhidTFmQXBKLVIySW5pOHRTdjJ4U2RrSmVIMml4aHR4ajY5R29zbV9CUWM3Q2FWOVpQX0VlZnlGUmk3UklRN1pNNTVfZG9RSnM5NnRWTDNsUXROemtZS3owMVBZbEhLeTB4YzFoXzZlS3V2UEJPQW9KX1RpdjRZTHM3VW5KbmpVNGpOUktLS29Ud2VUZk1qeU10ejc5SEo1d0loeDRsM3VuUGwzQzkxcFhYVFU1N2dnSGtvMUVMNEFLbUc2SjVaRERzd19GUUstajdlMVBQYkNSTkRsTUhVd0FaNGNNMGp0ZHpzc3M4ZUduTHBwZzBfZyIsImltYWdlIjoiaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi9jb25uZWN0LXgtcHJvZHVjdGlvbi5hcHBzcG90LmNvbS9vL1VzZXJzJTJGbkNFcVV4a3BSd1ZscVdYUmlqQVklMkZVc2Vyc19uQ0VxVXhrcFJ3VmxxV1hSaWpBWV8yOTIxODc2MDVfNDU2NjExMDA5ODAwMzIxXzMxNjkxNDIxMTEzNzM1NTkwMzlfbi5qcGVnP2FsdD1tZWRpYSZ0b2tlbj0zZWU4M2NkOC01OTdmLTQyZWQtOGQyNy04NDk2NzM1ZTQ4ZjkiLCJkaXNwbGF5TmFtZSI6IlN1cGVyIEFkbWluIPCfjoPwn5G7IiwiYXBwSWQiOiIxMjMxMjNhc2Rhc2Rhc2QiLCJpYXQiOjE3MzY0OTIwODEsImV4cCI6MzE3MjgwOTM0NDgxfQ.E_Bh36PXkJ61dLp31AX4vD91OYDl3R37FzS3qFFqMrI",
    orgId: "0000OrgRAndDConnectX",
    channelId: "9318254639",
    externalValue: "Chubby", // This links the user to your CRM
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: MyHomePage());
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("User App")),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 2. SEND MESSAGE MANUALLY (FROM FORM)
            ElevatedButton(
              style: ElevatedButton.styleFrom(
                padding:
                    const EdgeInsets.symmetric(horizontal: 30, vertical: 15),
                backgroundColor: Colors.blueAccent,
              ),
              onPressed: () =>
                  _showManualSendModal(context), // Open the small modal
              child: const Text(
                "Quick Support Message",
                style: TextStyle(color: Colors.white, fontSize: 16),
              ),
            ),

            const SizedBox(height: 20),

            // 3. START CHAT UI
            ElevatedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => ChatScreen(
                      onClose: () => Navigator.pop(context),
                      isHideCloseButton: true,
                      // customHeader: AppBar(
                      //   title: const Text("Support Chat"),
                      //   backgroundColor: Colors.teal,
                      // ),
                    ),
                  ),
                );
              },
              child: const Text("Open Chat UI"),
            ),
          ],
        ),
      ),
    );
  }
}

void _showManualSendModal(BuildContext context) {
  final TextEditingController modalController = TextEditingController();

  showDialog(
    context: context,
    builder: (context) {
      return AlertDialog(
        title: const Text("Quick Message"),
        content: TextField(
          controller: modalController,
          autofocus: true,
          decoration: const InputDecoration(
            hintText: "Enter your message here...",
            border: OutlineInputBorder(),
          ),
        ),
        actions: [
          TextButton(
            onPressed: () => Navigator.pop(context),
            child: const Text("Cancel"),
          ),
          ElevatedButton(
            onPressed: () {
              final text = modalController.text.trim();
              if (text.isNotEmpty) {
                // Call your library
                ChatController.instance.sendMessage(text: text);

                Navigator.pop(context); // Close modal

                ScaffoldMessenger.of(context).showSnackBar(
                  const SnackBar(content: Text("Message sent successfully!")),
                );
              }
            },
            child: const Text("Send"),
          ),
        ],
      );
    },
  );
}