вызов планшетного сканера бумаги в приложении Flutter

#flutter #image-scanner

#flutter #изображение-сканер

Вопрос:

Я хочу использовать сканеры бумаги в своем приложении flutter, чтобы я мог сканировать множество документов одновременно с помощью современных планшетных сканеров, если есть какие-либо надежные пакеты и плагины, которые помогают мне вызывать сканер (не CAM), пожалуйста, дайте мне знать, я буду признателен за вашу помощь…

Ответ №1:

Я думаю, что этот пакет flutter_genius_scan 3.0.24 полезен для вас.

Итак, сначала добавьте этот пакет flutter_genius_scan 3.0.24 в файл вашего проекта pubspec.yaml:

(Также включите пакет open_file: ^ 3.0.1 в файл вашего проекта pubspec.yaml.)

Точно так же, как :

 dependencies:
  flutter_genius_scan: ^3.0.24
  open_file: ^3.0.1
  

Затем создайте новую страницу Dart и назовите ее Scanning_Page и добавьте в нее следующий код.

 import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_genius_scan/flutter_genius_scan.dart';
import 'package:open_file/open_file.dart';

class Scanning_Page extends StatefulWidget {
  @override
  _Scanning_PageState createState() => _Scanning_PageState();
}

class _Scanning_PageState extends State<Scanning_Page> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('Scan Documents'),
        ),
        body: Center(
          child: RaisedButton.icon(
            onPressed: () {
              FlutterGeniusScan.scanWithConfiguration({
                'source': 'camera',
                'multiPage': true,
              }).then((result) {
                String pdfUrl = result['pdfUrl'];
                OpenFile.open(pdfUrl.replaceAll("file://", '')).then(
                        (result) => debugPrint(result.toString()),
                    onError: (error) => displayError(context, error));
              }, onError: (error) => displayError(context, error));
            },
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.all(Radius.circular(10.0))),
            label: Text('START SCANNING',
              style: TextStyle(color: Colors.white),),
            icon: Icon(Icons.scanner, color: Colors.white,),
            textColor: Colors.white,
            splashColor: Colors.red,
            color: Colors.lightBlue,),
        )
    );
  }

  void displayError(BuildContext context, PlatformException error) {
    Scaffold.of(context).showSnackBar(SnackBar(content: Text(error.message)));
  }
}
  

Затем в вашем файле main.dart используйте приведенный ниже код :

 import 'package:flutter/material.dart';
import 'package:flutter_app/Scanning_Page.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Scan Documents',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:Scanning_Page(),
    );
  }
}
  

Примечание: ваша minSdkVersion должна быть равна 19, т.е. minSdkVersion 19 в файле app -> build.gradle, чтобы поддерживать эти пакеты, как показано ниже :

  defaultConfig {
        .........
        .........
        minSdkVersion 19
        targetSdkVersion 28
        ........
        ........
    }