scansdk 0.0.4 copy "scansdk: ^0.0.4" to clipboard
scansdk: ^0.0.4 copied to clipboard

OVD KINEGRAM ScanSDK for Flutter

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:scansdk/scansdk.dart';

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

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

  @override
  State<ScanSdkExampleApp> createState() => _ScanSdkExampleAppState();
}

class _ScanSdkExampleAppState extends State<ScanSdkExampleApp> {
  final ScanSDK _scanSdk = ScanSDK();
  final List<ScanSdkResult> _results = <ScanSdkResult>[];
  String? _errorMessage;
  bool _isOpeningScanner = false;

  Future<void> _openScanner() async {
    if (_isOpeningScanner) {
      return;
    }

    setState(() {
      _errorMessage = null;
      _isOpeningScanner = true;
    });

    try {
      final List<ScanSdkResult> results = await _scanSdk.openScanner();
      if (!mounted) return;
      setState(() {
        _results
          ..clear()
          ..addAll(results);
      });
    } on PlatformException catch (error) {
      if (!mounted) return;
      setState(() => _errorMessage = error.message ?? error.code);
    } catch (error) {
      if (!mounted) return;
      setState(() => _errorMessage = error.toString());
    } finally {
      if (!mounted) return;
      setState(() => _isOpeningScanner = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('ScanSDK Flutter Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
          child: Column(
            children: [
              const Text(
                'Tap the button to launch the scanner.',
                textAlign: TextAlign.center,
              ),
              const SizedBox(height: 16),
              ElevatedButton(
                onPressed: _isOpeningScanner ? null : _openScanner,
                child: Text(_isOpeningScanner ? 'Opening…' : 'Open Scanner'),
              ),
              if (_errorMessage != null) ...[
                const SizedBox(height: 16),
                Text(
                  _errorMessage!,
                  style: const TextStyle(color: Colors.red),
                  textAlign: TextAlign.center,
                ),
              ],
              const SizedBox(height: 16),
              Expanded(child: _buildResults()),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildResults() {
    if (_results.isEmpty) {
      return const Center(
        child: Text(
          'No scan results yet. The latest scan will appear here.',
          textAlign: TextAlign.center,
        ),
      );
    }

    return ListView.separated(
      itemCount: _results.length,
      separatorBuilder: (_, __) => const SizedBox(height: 12),
      itemBuilder: (BuildContext context, int index) {
        final ScanSdkResult result = _results[index];
        return Card(
          child: Padding(
            padding: const EdgeInsets.all(12),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  result.type,
                  style: Theme.of(context).textTheme.titleMedium,
                ),
                const SizedBox(height: 8),
                Text(
                  result.message,
                  style: Theme.of(context).textTheme.bodyMedium,
                ),
              ],
            ),
          ),
        );
      },
    );
  }
}
0
likes
135
points
197
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

OVD KINEGRAM ScanSDK for Flutter

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on scansdk

Packages that implement scansdk