document_scanner 0.1.1 document_scanner: ^0.1.1 copied to clipboard
A plugin that creates a native platform view that scans documents, as a flutter widget.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:document_scanner/document_scanner.dart';
import 'package:flutter/scheduler.dart';
import 'package:permission_handler/permission_handler.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
File scannedDocument;
bool isCameraPermissionAccepted;
@override
void initState() {
checkCameraPermission();
// ScannedImage.fromJson(
// '{rectangleCoordinates: {bottomLeft: {x: 133.0, y: 718.0}, bottomRight: {x: 439.0, y: 699.0}, topLeft: {x: 95.0, y: 106.0}, topRight: {x: 407.0, y: 93.0}}, croppedImage: file:///data/user/0/com.example.document_scanner_example/cache/documents/aad9bed5-68ea-4bb9-a7a2-13c57b38949f.jpg, width: 500, initialImage: file:///data/user/0/com.example.document_scanner_example/cache/documents/919a73f2-2590-4148-b0c7-212dcfffaf94.jpg, height: 888}');
super.initState();
}
checkCameraPermission() async {
PermissionStatus cameraPermission = await Permission.camera.request();
isCameraPermissionAccepted = cameraPermission.isGranted;
SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: isCameraPermissionAccepted == null
? Center(
child: CircularProgressIndicator(),
)
: isCameraPermissionAccepted
? Stack(
children: <Widget>[
Column(
children: <Widget>[
Expanded(
child: scannedDocument != null
? Image(
image: FileImage(scannedDocument),
)
: DocumentScanner(
onDocumentScanned:
(ScannedImage scannedImage) {
print("document : " +
scannedImage.croppedImage);
setState(() {
scannedDocument = scannedImage
.getScannedDocumentAsFile();
// imageLocation = image;
});
},
),
),
],
),
scannedDocument != null
? Positioned(
bottom: 20,
left: 0,
right: 0,
child: RaisedButton(
child: Text("retry"),
onPressed: () {
setState(() {
scannedDocument = null;
});
}),
)
: Container(),
],
)
: Center(
child: Text("camera permission denied"),
),
),
);
}
}