From e0558b974196961f7b687d6559705dab3acf69c0 Mon Sep 17 00:00:00 2001 From: yaso Date: Thu, 16 Jan 2025 11:55:46 +0200 Subject: [PATCH] create MIH IOS and anrdoid scanner page --- .../mzansi_wallet/mih_barcode_scanner.dart | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 Frontend/lib/mih_packages/mzansi_wallet/mih_barcode_scanner.dart diff --git a/Frontend/lib/mih_packages/mzansi_wallet/mih_barcode_scanner.dart b/Frontend/lib/mih_packages/mzansi_wallet/mih_barcode_scanner.dart new file mode 100644 index 00000000..e98efec0 --- /dev/null +++ b/Frontend/lib/mih_packages/mzansi_wallet/mih_barcode_scanner.dart @@ -0,0 +1,108 @@ +import 'package:Mzansi_Innovation_Hub/main.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; +import 'package:flutter/material.dart'; +import 'package:mobile_scanner/mobile_scanner.dart'; + +class MihBarcodeScanner extends StatefulWidget { + final TextEditingController cardNumberController; + const MihBarcodeScanner({ + super.key, + required this.cardNumberController, + }); + + @override + State createState() => _MihBarcodeScannerState(); +} + +class _MihBarcodeScannerState extends State { + final MobileScannerController scannerController = MobileScannerController( + detectionSpeed: DetectionSpeed.normal, + ); + + void foundCode(BarcodeCapture bcode) { + if (bcode.barcodes.first.rawValue != null) { + setState(() { + widget.cardNumberController.text = bcode.barcodes.first.rawValue!; + }); + //print(bcode.barcodes.first.rawValue); + scannerController.stop(); + Navigator.of(context).pop(); + } + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + body: Stack( + children: [ + MobileScanner( + onDetect: foundCode, + ), + Align( + alignment: Alignment.center, + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Container( + width: 500, + height: 150, + decoration: BoxDecoration( + border: Border.all( + width: 5, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ), + ), + ), + Align( + alignment: AlignmentDirectional.bottomCenter, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(10.0), + child: MIHButton( + onTap: () { + scannerController.stop(); + Navigator.of(context).pop(); + }, + buttonText: "Cancel", + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + ), + // GestureDetector( + // onTap: () { + // scannerController.stop(); + // Navigator.of(context).pop(); + // }, + // child: const Text( + // "Cancel", + // style: TextStyle( + // fontWeight: FontWeight.bold, + // fontSize: 25, + // ), + // ), + // ), + // IconButton( + // onPressed: () {}, + // icon: const Icon( + // Icons.flip_camera_android, + // size: 30, + // ), + // ), + ], + ), + ) + ], + ), + ), + ); + } +}