You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
| import 'package:easy_localization/easy_localization.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:mobile_scanner/mobile_scanner.dart';
 | |
| import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
 | |
| import 'package:mohem_flutter_app/widgets/button/default_button.dart';
 | |
| 
 | |
| class QrScannerDialog extends StatefulWidget {
 | |
|   @override
 | |
|   State<QrScannerDialog> createState() => _QrScannerDialogState();
 | |
| }
 | |
| 
 | |
| class _QrScannerDialogState extends State<QrScannerDialog> {
 | |
|   final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
 | |
|   // Barcode? result;
 | |
|   // QRViewController? controller;
 | |
|   Barcode? _barcode;
 | |
|   bool isPicked = false;
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Scaffold(
 | |
|       body: Container(
 | |
|         width: double.infinity,
 | |
|         height: double.infinity,
 | |
|         color: Colors.white,
 | |
|         child: Column(
 | |
|           children: [
 | |
|             Expanded(
 | |
|               flex: 1,
 | |
|               child: MobileScanner(key : qrKey,onDetect: _handleBarcode),
 | |
|             ),
 | |
|             // Expanded(
 | |
|             //   flex: 1,
 | |
|             //   child: Center(
 | |
|             //     child: (result != null)
 | |
|             //         ? Text(
 | |
|             //         'Barcode Type: ${result!.format}   Data: ${result!.code}')
 | |
|             //         : Text('Scan a code'),
 | |
|             //   ),
 | |
|             // ),
 | |
|             Padding(
 | |
|               padding: const EdgeInsets.all(12.0),
 | |
|               child: DefaultButton(
 | |
|                 LocaleKeys.cancel.tr(),
 | |
|                 () {
 | |
|                   Navigator.pop(context);
 | |
|                 },
 | |
|               ),
 | |
|             ),
 | |
|           ],
 | |
|         ),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   void _handleBarcode(BarcodeCapture barcodes) {
 | |
|     // this.controller = controller;
 | |
|     Barcode? data = barcodes.barcodes.firstOrNull;
 | |
|     if(data == null || isPicked) {
 | |
|       return;
 | |
|     }
 | |
|     // controller.scannedDataStream.listen((scanData) {
 | |
|       setState(() {
 | |
|         // result = scanData;
 | |
|           isPicked = true;
 | |
|           Navigator.pop(context, data.displayValue);
 | |
|       });
 | |
|     // });
 | |
|     // controller.pauseCamera();
 | |
|     // controller.resumeCamera();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void dispose() {
 | |
|     super.dispose();
 | |
|   }
 | |
| }
 |