kindly_sdk 1.0.1 copy "kindly_sdk: ^1.0.1" to clipboard
kindly_sdk: ^1.0.1 copied to clipboard

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

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:kindly_sdk/kindly.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kindly SDK Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Kindly SDK Example'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _isInitialized = false;
  bool _isLoading = false;
  String _status = 'Not initialized';

  @override
  void initState() {
    super.initState();
  }

  Future<void> _initializeSDK() async {
    setState(() {
      _isLoading = true;
      _status = 'Initializing...';
    });

    try {
      await KindlySDK.start(
        botKey: 'aef0b638-2256-4f20-b2ac-7beaf89dedc6', // Updated bot key
        authTokenCallback: () async {
          // Simulate fetching auth token from your backend
          await Future.delayed(const Duration(seconds: 1));
          return 'your-jwt-token-here';
        },
      );

      setState(() {
        _isInitialized = true;
        _status = 'SDK initialized successfully';
      });
    } catch (e) {
      setState(() {
        _status = 'Failed to initialize: $e';
      });
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }

  Future<void> _displayChat() async {
    if (!_isInitialized) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Please initialize SDK first')),
      );
      return;
    }

    try {
      await KindlySDK.displayChat();
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error displaying chat: $e')),
      );
    }
  }

  Future<void> _launchChatWithDialogue() async {
    if (!_isInitialized) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Please initialize SDK first')),
      );
      return;
    }

    try {
      await KindlySDK.launchChat(
        triggerDialogueId: 'welcome_dialogue',
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error launching chat: $e')),
      );
    }
  }

  Future<void> _setCustomTheme() async {
    if (!_isInitialized) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Please initialize SDK first')),
      );
      return;
    }

    try {
      await KindlySDK.setCustomTheme(
        background: Colors.white,
        botMessageBackground: Colors.blue.shade50,
        botMessageText: Colors.black87,
        userMessageBackground: Colors.blue,
        userMessageText: Colors.white,
        buttonBackground: Colors.blue,
        buttonText: Colors.white,
        navBarBackground: Colors.blue.shade700,
        navBarText: Colors.white,
        inputBackground: Colors.grey.shade100,
        inputText: Colors.black87,
      );

      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Custom theme applied')),
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error setting theme: $e')),
      );
    }
  }

  Future<void> _setContext() async {
    if (!_isInitialized) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Please initialize SDK first')),
      );
      return;
    }

    try {
      await KindlySDK.setNewContext({
        'userId': '12345',
        'userName': 'John Doe',
        'email': 'john@example.com',
        'accountType': 'premium',
      });

      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Context set successfully')),
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error setting context: $e')),
      );
    }
  }

  Future<void> _enableVerboseLogging() async {
    try {
      await KindlySDK.setVerboseLogging(true);
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Verbose logging enabled')),
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error enabling logging: $e')),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Status: $_status',
                style: Theme.of(context).textTheme.titleMedium,
              ),
              const SizedBox(height: 24),
              if (_isLoading)
                const CircularProgressIndicator()
              else ...[
                ElevatedButton(
                  onPressed: !_isInitialized ? _initializeSDK : null,
                  child: const Text('Initialize SDK'),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                  onPressed: _isInitialized ? _displayChat : null,
                  child: const Text('Display Chat'),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                  onPressed: _isInitialized ? _launchChatWithDialogue : null,
                  child: const Text('Launch Chat with Dialogue'),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                  onPressed: _isInitialized ? _setCustomTheme : null,
                  child: const Text('Apply Custom Theme'),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                  onPressed: _isInitialized ? _setContext : null,
                  child: const Text('Set User Context'),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                  onPressed: _enableVerboseLogging,
                  child: const Text('Enable Verbose Logging'),
                ),
              ],
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
150
points
19
downloads

Publisher

unverified uploader

Weekly Downloads

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

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on kindly_sdk

Packages that implement kindly_sdk