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.
mohemm-flutter-app/lib/widgets/qr_scanner_dialog.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();
}
}