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

PlatformAndroid

Adovvy SDK for Flutter apps. Adovvy is an AI platform built on three pillars: data intelligence, voice AI, and computer vision.

example/lib/main.dart

import 'package:adovvy_sdk/adovvy_sdk.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await dotenv.load(fileName: '.env');
  runApp(const AdovvySdkExampleApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Adovvy SDK Example',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.teal),
        useMaterial3: true,
      ),
      home: const _ConfigScreen(),
    );
  }
}

class _ConfigScreen extends StatefulWidget {
  const _ConfigScreen();

  @override
  State<_ConfigScreen> createState() => _ConfigScreenState();
}

class _ConfigScreenState extends State<_ConfigScreen> {
  late final TextEditingController _chainlitServer;
  late final TextEditingController _chatbotId;
  late final TextEditingController _buttonColor;
  late final TextEditingController _scripts;
  late final TextEditingController _loaderScriptUrl;

  bool _isBusy = false;
  String? _error;

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

    _chainlitServer = TextEditingController(
      text: _envOrEmpty('CHAINLIT_SERVER'),
    );
    _chatbotId = TextEditingController(text: _envOrEmpty('CHATBOT_ID'));
    _buttonColor = TextEditingController(
      text: "#${_envOrEmpty('BUTTON_COLOR')}",
    );
    _scripts = TextEditingController(text: _envOrEmpty('SCRIPTS'));
    _loaderScriptUrl = TextEditingController(
      text: _envOrEmpty('LOADER_SCRIPT_URL'),
    );
  }

  String _envOrEmpty(String key) => (dotenv.env[key] ?? '').trim();

  @override
  void dispose() {
    _chainlitServer.dispose();
    _chatbotId.dispose();
    _buttonColor.dispose();
    _scripts.dispose();
    _loaderScriptUrl.dispose();
    super.dispose();
  }

  List<String> _parseScripts(String raw) {
    return raw
        .split(',')
        .map((s) => s.trim())
        .where((s) => s.isNotEmpty)
        .toList(growable: false);
  }

  Future<void> _initAndOpenChat() async {
    setState(() {
      _isBusy = true;
      _error = null;
    });

    try {
      await AdovvySdk.init(
        chatbotConfig: AdovvyChatbotConfig(
          chainlitServer: _chainlitServer.text.trim(),
          chatbotId: _chatbotId.text.trim(),
          buttonColor: _buttonColor.text.trim(),
          loaderScriptUrl: _loaderScriptUrl.text.trim(),
          scripts: _parseScripts(_scripts.text),
        ),
      );

      if (!mounted) return;
      AdovvySdk.openChat(context);
    } catch (e) {
      setState(() => _error = e.toString());
    } finally {
      if (mounted) setState(() => _isBusy = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    final scheme = Theme.of(context).colorScheme;
    return Scaffold(
      appBar: AppBar(title: const Text('Adovvy SDK Example')),
      body: SafeArea(
        child: ListView(
          padding: const EdgeInsets.all(16),
          children: [
            _field(
              controller: _chainlitServer,
              label: 'chainlitServer (CHAINLIT_SERVER)',
              hint: 'https://dev.api.adovvy.ai',
            ),
            _field(
              controller: _chatbotId,
              label: 'chatbotId (CHATBOT_ID)',
              hint: 'UUID',
            ),
            _field(
              controller: _buttonColor,
              label: 'buttonColor (BUTTON_COLOR)',
              hint: 'button color',
            ),
            _field(
              controller: _scripts,
              label: 'scripts (SCRIPTS, comma-separated)',
              hint: 'https://.../index.js',
              minLines: 2,
              maxLines: 3,
            ),
            _field(
              controller: _loaderScriptUrl,
              label: 'loaderScriptUrl (LOADER_SCRIPT_URL)',
              hint: 'https://.../loader.js',
            ),
            const SizedBox(height: 16),
            if (_error != null)
              Padding(
                padding: const EdgeInsets.only(bottom: 12),
                child: Text(_error!, style: TextStyle(color: scheme.error)),
              ),
            FilledButton(
              onPressed: _isBusy ? null : _initAndOpenChat,
              child: _isBusy
                  ? const SizedBox(
                      width: 18,
                      height: 18,
                      child: CircularProgressIndicator(strokeWidth: 2),
                    )
                  : const Text('Initialize & Open Chat'),
            ),
          ],
        ),
      ),
    );
  }
}

Widget _field({
  required TextEditingController controller,
  required String label,
  String? hint,
  int minLines = 1,
  int maxLines = 1,
}) {
  return Padding(
    padding: const EdgeInsets.only(bottom: 12),
    child: TextField(
      controller: controller,
      minLines: minLines,
      maxLines: maxLines,
      decoration: InputDecoration(
        labelText: label,
        hintText: hint,
        border: const OutlineInputBorder(),
      ),
    ),
  );
}
1
likes
150
points
220
downloads

Documentation

API reference

Publisher

verified publishercrewlogix.com

Weekly Downloads

Adovvy SDK for Flutter apps. Adovvy is an AI platform built on three pillars: data intelligence, voice AI, and computer vision.

Homepage

License

MIT (license)

Dependencies

file_picker, flutter, permission_handler, webview_flutter, webview_flutter_android

More

Packages that depend on adovvy_sdk