#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
........
........
}