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.
uco-mobile-poc/lib/app/modules/qr_setting/views/qr_scan_screen.dart

323 lines
10 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
// import 'package:qr_code_scanner/qr_code_scanner.dart';
import '../../../custom_widgets/custom_app_bar.dart';
import '../controllers/qr_setting_controller.dart';
class QrScanScreen extends GetView<QrSettingController> {
const QrScanScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: DashBoardAppBar(
onBackButtonPressed: () {
Get.back();
},
title: "QR SCAN",
),
body: GetBuilder<QrSettingController>(builder: (controller) {
return Column(
children: <Widget>[
// Expanded(
// flex: 5,
// child: QRView(
// key: controller.qrKey,
// onQRViewCreated: controller.onQRViewCreated,
// overlay: QrScannerOverlayShape(),
// ),
// ),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
GestureDetector(
onTap: () async {
await controller.scanfromImage();
},
child: const Icon(Icons.image)),
GestureDetector(
onTap: () {
controller.toggleFlash();
},
child: FutureBuilder<bool?>(
future: controller.getFlashStatus(),
builder: (context, snapshot) {
return Icon(
(snapshot.data ?? false)
? Icons.flash_off
: Icons.flash_on,
);
},
),
),
],
)),
],
);
}),
);
}
}
//
// // import 'dart:async';
//
// // import 'package:flutter/material.dart';
// // import 'package:get/get.dart';
// // import 'package:qr_flutter/qr_flutter.dart';
// // import 'package:uco_ciihive/app/core/utils/logs_utils.dart';
// // import 'package:uco_ciihive/app/custom_widgets/custom_app_bar.dart';
// // import 'package:mobile_scanner/mobile_scanner.dart';
// // import 'scanner_buttons.dart';
//
// // class QrScanScreen extends StatefulWidget {
// // const QrScanScreen({super.key});
//
// // @override
// // State<QrScanScreen> createState() => _QrScanScreenState();
// // }
//
// // class _QrScanScreenState extends State<QrScanScreen> {
// // //
//
// // final MobileScannerController scanController = MobileScannerController(
// // formats: [BarcodeFormat.qrCode],
// // useNewCameraSelector: true,
// // facing: CameraFacing.back,
// // );
//
// // StreamSubscription<Object?>? _subscription;
//
// // late final AppLifecycleListener _listener;
//
// // Barcode? _barcode;
//
// // @override
// // void initState() {
//
// // initScanner();
// // listenAppLifeState();
//
// // super.initState();
// // }
//
// // @override
// // Future dispose() async {
// // unawaited(_subscription?.cancel());
// // _subscription = null;
// // _listener.dispose();
//
// // super.dispose();
//
// // await scanController.dispose();
// // }
//
// // void listenAppLifeState() {
// // _listener = AppLifecycleListener(
// // onStateChange: _onStateChanged,
// // );
// // }
//
// // void initScanner() {
// // _subscription = scanController.barcodes.listen(_handleBarcode);
//
// // unawaited(scanController.start());
// // }
//
// // Future<void> _onStateChanged(AppLifecycleState state) async {
// // dp("Scanner state", state.name);
// // switch (state) {
// // case AppLifecycleState.hidden:
// // case AppLifecycleState.paused:
// // case AppLifecycleState.detached:
// // return;
// // case AppLifecycleState.resumed:
// // _subscription = scanController.barcodes.listen(_handleBarcode);
//
// // unawaited(scanController.start());
// // case AppLifecycleState.inactive:
// // unawaited(_subscription?.cancel());
// // _subscription = null;
// // unawaited(scanController.stop());
// // }
// // }
//
// // void _handleBarcode(BarcodeCapture barcodes) {
// // _barcode = barcodes.barcodes.firstOrNull;
// // dp("Barcode Result Raw", _barcode?.rawValue);
// // dp("Barcode Display Value", _barcode?.displayValue);
//
// // setState(() {});
// // }
//
// // @override
// // Widget build(BuildContext context) {
// // final scanWindow = Rect.fromCenter(
// // center: MediaQuery.sizeOf(context).center(Offset.zero),
// // width: 200,
// // height: 200,
// // );
// // return Scaffold(
// // appBar: DashBoardAppBar(
// // onBackButtonPressed: () {
// // Get.back();
// // },
// // ),
// // body: Stack(
// // fit: StackFit.expand,
// // children: [
// // Center(
// // child: MobileScanner(
// // fit: BoxFit.contain,
// // controller: scanController,
// // scanWindow: scanWindow,
// // errorBuilder: (context, error, child) {
// // // return ScannerErrorWidget(error: error);
// // return const SizedBox(
// // child: Text("Error Widget"),
// // );
// // },
// // overlayBuilder: (context, constraints) {
// // return Padding(
// // padding: const EdgeInsets.all(16.0),
// // child: Align(
// // alignment: Alignment.bottomCenter,
// // child:
// // ScannedBarcodeLabel(barcodes: scanController.barcodes),
// // ),
// // );
// // },
// // ),
// // ),
// // ValueListenableBuilder(
// // valueListenable: scanController,
// // builder: (context, value, child) {
// // if (!value.isInitialized ||
// // !value.isRunning ||
// // value.error != null) {
// // return const SizedBox(
// // child: Text("No init Scanner"),
// // );
// // }
//
// // return CustomPaint(
// // painter: ScannerOverlay(scanWindow: scanWindow),
// // );
// // },
// // ),
// // Align(
// // alignment: Alignment.bottomCenter,
// // child: Padding(
// // padding: const EdgeInsets.all(16.0),
// // child: Row(
// // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
// // children: [
// // ToggleFlashlightButton(controller: scanController),
// // SwitchCameraButton(controller: scanController),
// // ],
// // ),
// // ),
// // ),
// // ],
// // ),
// // );
// // }
// // }
//
// // class ScannerOverlay extends CustomPainter {
// // const ScannerOverlay({
// // required this.scanWindow,
// // this.borderRadius = 12.0,
// // });
//
// // final Rect scanWindow;
// // final double borderRadius;
//
// // @override
// // void paint(Canvas canvas, Size size) {
// // // TODO: use `Offset.zero & size` instead of Rect.largest
// // // we need to pass the size to the custom paint widget
// // final backgroundPath = Path()..addRect(Rect.largest);
//
// // final cutoutPath = Path()
// // ..addRRect(
// // RRect.fromRectAndCorners(
// // scanWindow,
// // topLeft: Radius.circular(borderRadius),
// // topRight: Radius.circular(borderRadius),
// // bottomLeft: Radius.circular(borderRadius),
// // bottomRight: Radius.circular(borderRadius),
// // ),
// // );
//
// // final backgroundPaint = Paint()
// // ..color = Colors.black.withOpacity(0.5)
// // ..style = PaintingStyle.fill
// // ..blendMode = BlendMode.dstOut;
//
// // final backgroundWithCutout = Path.combine(
// // PathOperation.difference,
// // backgroundPath,
// // cutoutPath,
// // );
//
// // final borderPaint = Paint()
// // ..color = Colors.white
// // ..style = PaintingStyle.stroke
// // ..strokeWidth = 4.0;
//
// // final borderRect = RRect.fromRectAndCorners(
// // scanWindow,
// // topLeft: Radius.circular(borderRadius),
// // topRight: Radius.circular(borderRadius),
// // bottomLeft: Radius.circular(borderRadius),
// // bottomRight: Radius.circular(borderRadius),
// // );
//
// // // First, draw the background,
// // // with a cutout area that is a bit larger than the scan window.
// // // Finally, draw the scan window itself.
// // canvas.drawPath(backgroundWithCutout, backgroundPaint);
// // canvas.drawRRect(borderRect, borderPaint);
// // }
//
// // @override
// // bool shouldRepaint(ScannerOverlay oldDelegate) {
// // return scanWindow != oldDelegate.scanWindow ||
// // borderRadius != oldDelegate.borderRadius;
// // }
// // }
//
// // class ScannedBarcodeLabel extends StatelessWidget {
// // const ScannedBarcodeLabel({
// // super.key,
// // required this.barcodes,
// // });
//
// // final Stream<BarcodeCapture> barcodes;
//
// // @override
// // Widget build(BuildContext context) {
// // return StreamBuilder(
// // stream: barcodes,
// // builder: (context, snapshot) {
// // final scannedBarcodes = snapshot.data?.barcodes ?? [];
//
// // if (scannedBarcodes.isEmpty) {
// // return const Text(
// // 'Scan something!',
// // overflow: TextOverflow.fade,
// // style: TextStyle(color: Colors.wh'ite),
// // );
// // }
//
// // return Text(
// // scannedBarcodes.first.displayValue ?? 'No display value.',
// // overflow: TextOverflow.fade,
// // style: const TextStyle(color: Colors.white),
// // );
// // },
// // );
// // }
// // }