web_document_scanner 0.0.3 copy "web_document_scanner: ^0.0.3" to clipboard
web_document_scanner: ^0.0.3 copied to clipboard

Platformweb

Web Document Scanner Example

example/lib/main.dart

import 'package:web_document_scanner/web_document_scanner.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) => MaterialApp(
        title: 'Web Document Scanner',
        home: ScannerPage(),
      );
}

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

  @override
  State<ScannerPage> createState() => _ScannerPageState();
}

class _ScannerPageState extends State<ScannerPage> {
  /// [Variables] to control and modify settings and functionalities
  ScannerController? scannerController;
  ScannerStatus scannerStatus = ScannerStatus.closed;
  ScannerResponse scannerResponse = ScannerResponse();

  @override
  void initState() {
    /// [ScannerController] should be Initialized Before showing it's widget
    /// [ScannerController] will initialize the Camera
    ///     Initialization procedure includes:
    ///       - Getting Permissions for Camera
    ///       - Variables Assignments (Status, Response, Detection Model, DetectionArguments, ...)
    ///       - Setting Controllers

    _controllerInitialization();

    /// [startAutoScan] of [ScannerController] can be either here to start by page initialization
    /// OR
    /// Use it by an action such as Tapping on a Button

    super.initState();
  }

  void _controllerInitialization() async {
    scannerStatus = ScannerStatus.initializing;
    final List<CameraDescription> cameras = await availableCameras();
    if (cameras.isNotEmpty) {
      final CameraDescription selectedCamera = cameras.first;
      scannerController = ScannerController(description: selectedCamera);
      if (scannerController != null) {
        await scannerController?.initialize();
      } else {
        throw Exception(PackageStrings.throwErrorControllerInitialization);
      }
    } else {
      throw Exception(PackageStrings.throwErrorCameraAvailability);
    }
  }

  /// [AutoScan] can be triggered in many ways
  /// such as page initialization, which trigger [AutoScan] in page start
  /// Or by Tapping on a [Button]
  void startAutoScan() async {
    scannerStatus = ScannerStatus.scanning;
    scannerResponse = await scannerController!.startAutoScan();
  }

  void stopAutoScan() {
    scannerStatus = ScannerStatus.closed;
  }

  @override
  Widget build(BuildContext context) => Column(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [
        Text(PackageStrings.packageName),
        WebDocumentScanner(scannerController!),
        Image.memory(scannerResponse.imageData!, fit: BoxFit.contain),
        Image.memory(scannerResponse.croppedData!, fit: BoxFit.contain),
        Spacer(),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            ElevatedButton(
                onPressed: () => scannerController!.startAutoScan(), child: Text('Start AutoScan')),
            ElevatedButton(
                onPressed: () => scannerController!.stopAutoScan(), child: Text('Stop AutoScan')),
          ],
        )
      ]);
}
1
likes
140
points
146
downloads

Publisher

verified publisherresam.site

Weekly Downloads

Web Document Scanner Example

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

Funding

Consider supporting this project:

resam.site

License

BSD-3-Clause (license)

Dependencies

camera, dartdoc, dartz, flutter, image, permission_handler

More

Packages that depend on web_document_scanner