kreltix_liveness_sdk 0.2.1 copy "kreltix_liveness_sdk: ^0.2.1" to clipboard
kreltix_liveness_sdk: ^0.2.1 copied to clipboard

Kreltix liveness detection SDK for Flutter — challenge-based, confidence-scored, drop-in ready.

example/lib/main.dart

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

void main() => runApp(const KreltixExampleApp());

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kreltix Liveness — Example',
      theme: ThemeData.dark(),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final _apiKeyCtrl = TextEditingController();
  final _userIdCtrl = TextEditingController();

  String _status = '';
  Map<String, dynamic>? _result;
  bool _loading = false;

  Future<void> _startCheck() async {
    final publicKey = _apiKeyCtrl.text.trim();
    if (publicKey.isEmpty) {
      setState(() => _status = 'Please enter your public key.');
      return;
    }

    setState(() {
      _loading = true;
      _result = null;
      _status = 'Initializing...';
    });

    try {
      final sdk = KreltixSDK.initialize(publicKey);

      final result = await sdk.startLivenessCheck(
        context: context,
        metadata: {
          'userId': _userIdCtrl.text.trim().isNotEmpty ? _userIdCtrl.text.trim() : 'test_user',
          'source': 'flutter-example-app',
        },
        onSessionCreated: (session) {
          setState(() => _status = 'Session created. Challenges: ${session.challenges.join(' → ')}');
        },
        onChallengeStarted: (challenge) {
          setState(() => _status = 'Challenge: $challenge');
        },
        onProgress: (event) {
          setState(() => _status = '[${event.stage.name}] ${event.message}');
        },
        onError: (err) {
          setState(() => _status = 'Error: $err');
        },
      );

      setState(() {
        _status = 'Done.';
        _result = {
          'sessionId': result.sessionId,
          'isLive': result.isLive,
          'confidence': result.confidence,
          'allChallengesPassed': result.allChallengesPassed,
          'recommendation': result.recommendation,
        };
      });
    } catch (e) {
      setState(() => _status = 'Error: $e');
    } finally {
      setState(() => _loading = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Kreltix Liveness SDK')),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            TextField(
              controller: _apiKeyCtrl,
              decoration: const InputDecoration(labelText: 'Public Key (pk_live_...)'),
            ),
            const SizedBox(height: 12),
            TextField(
              controller: _userIdCtrl,
              decoration: const InputDecoration(labelText: 'User ID (optional)'),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: _loading ? null : _startCheck,
              child: Text(_loading ? 'Running...' : 'Start Liveness Check'),
            ),
            const SizedBox(height: 16),
            if (_status.isNotEmpty)
              Text(_status, style: const TextStyle(color: Colors.white70)),
            if (_result != null) ...[
              const SizedBox(height: 16),
              Container(
                padding: const EdgeInsets.all(16),
                decoration: BoxDecoration(
                  color: (_result!['isLive'] as bool) ? Colors.green.shade900 : Colors.red.shade900,
                  borderRadius: BorderRadius.circular(12),
                ),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text(
                      (_result!['isLive'] as bool)
                          ? '✓ Verified — ${_result!['confidence']}% confidence'
                          : '✗ Failed — ${_result!['recommendation'] ?? 'No reason provided'}',
                      style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
                    ),
                    const SizedBox(height: 8),
                    Text('Session: ${_result!['sessionId']}',
                        style: const TextStyle(fontSize: 12, color: Colors.white60)),
                  ],
                ),
              ),
            ],
          ],
        ),
      ),
    );
  }
}
1
likes
125
points
22
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Kreltix liveness detection SDK for Flutter — challenge-based, confidence-scored, drop-in ready.

Homepage

License

MIT (license)

Dependencies

camera, flutter, google_mlkit_face_detection, http, path_provider, permission_handler

More

Packages that depend on kreltix_liveness_sdk