quickcapture 1.0.6 quickcapture: ^1.0.6 copied to clipboard
QuickCapture AI Based Mobile Document Scanning plugin for Flutter From Extrieve.
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:async';
// Import the 'dart:io' library for File class.
import 'package:quickcapture/quickcapture.dart';
import 'package:open_file/open_file.dart';
// import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(const MyApp());
}
typedef MyCallback = void Function(String result);
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _quickcapturePlugin = Quickcapture();
List<String> _capturedImage = [];
@override
void initState() {
super.initState();
}
Future<void> startCapture() async {
String? response = await _quickcapturePlugin.startCapture();
setState(() {
// Assuming your JSON response is stored in the variable 'response'
Map<String, dynamic> jsonResponse = jsonDecode(response!);
// Extract the list of image paths from the 'fileCollection' key
_capturedImage = List<String>.from(jsonResponse['fileCollection']);
});
}
Future<void> buildPDF() async {
String? response = await _quickcapturePlugin.buildPDFForLastCapture();
OpenFile.open(response);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('QuickCapture'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_capturedImage.isNotEmpty
? Expanded(
child: ImageGrid(_capturedImage),
)
: Container(),
ElevatedButton(
onPressed: () => startCapture(),
child: const Text("Start capture"),
),
ElevatedButton(
onPressed: () => buildPDF(),
child: const Text("Build PDF"),
),
],
),
),
),
);
}
}
class ImageGrid extends StatelessWidget {
final List<String> imagePaths;
const ImageGrid(this.imagePaths, {super.key});
@override
Widget build(BuildContext context) {
return GridView.builder(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // Number of images per row
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
),
itemCount: imagePaths.length,
itemBuilder: (context, index) {
return Image.file(
File(imagePaths[index]),
width: 200,
height: 200,
fit: BoxFit.cover,
);
},
);
}
}