Open NassimCodeDev opened 2 weeks ago
In this way, you can make your stuff,example-
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_doc_scanner/flutter_doc_scanner.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
List<dynamic> _scannedDocuments = []; // Store scanned documents
Future<void> scanDocument() async {
dynamic scannedDocument;
try {
scannedDocument = await FlutterDocScanner().getScanDocuments() ??
'Unknown platform document';
} on PlatformException {
scannedDocument = 'Failed to get scanned document.';
}
if (scannedDocument != null && scannedDocument is List) {
setState(() {
_scannedDocuments.addAll(scannedDocument); // Add scanned documents to the list
});
}
}
Future<void> scanDocumentUri() async {
dynamic scannedDocument;
try {
scannedDocument = await FlutterDocScanner().getScanDocumentsUri() ??
'Unknown platform document';
} on PlatformException {
scannedDocument = 'Failed to get scanned document.';
}
if (scannedDocument != null) {
setState(() {
_scannedDocuments.add(scannedDocument); // Add scanned document URI to the list
});
}
}
void viewCapturedImages() {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ImagesPage(images: _scannedDocuments),
),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Document Scanner Example'),
),
body: Center(
child: Column(
children: [
_scannedDocuments.isNotEmpty
? Text("Captured Documents: ${_scannedDocuments.length}")
: const Text("No Documents Scanned"),
],
),
),
floatingActionButton: Padding(
padding: const EdgeInsets.only(bottom: 16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: ElevatedButton(
onPressed: scanDocument,
child: const Text("Scan Documents"),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: ElevatedButton(
onPressed: scanDocumentUri,
child: const Text("Get Scan Documents URI"),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: ElevatedButton(
onPressed: viewCapturedImages,
child: const Text("View Captured Images"),
),
),
],
),
),
),
);
}
}
// Page to display scanned images
class ImagesPage extends StatelessWidget {
final List<dynamic> images;
ImagesPage({required this.images});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Captured Images')),
body: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 4,
mainAxisSpacing: 4,
),
itemCount: images.length,
itemBuilder: (context, index) {
return Image.memory(images[index]); // Assuming `images` is a list of Uint8List
},
),
);
}
}
Hello. I want a way to store captured images in an array, and when a button is pressed to display the image, a page opens that shows the captured images.