import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:siro_rider/constant/colors.dart'; import 'package:siro_rider/controller/home/profile/invites_rewards_controller.dart'; class QRScannerPage extends StatefulWidget { @override _QRScannerPageState createState() => _QRScannerPageState(); } class _QRScannerPageState extends State { final InvitesRewardsController controller = Get.find(); bool _isScanned = false; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black, appBar: AppBar( backgroundColor: Colors.black, iconTheme: const IconThemeData(color: Colors.white), title: Text("Scan QR Code".tr, style: const TextStyle(color: Colors.white)), ), body: Stack( children: [ MobileScanner( onDetect: (capture) { if (_isScanned) return; final List barcodes = capture.barcodes; for (final barcode in barcodes) { if (barcode.rawValue != null) { setState(() => _isScanned = true); Get.back(); // close scanner page controller.processScannedQRCode(barcode.rawValue!); break; } } }, ), Center( child: Container( width: 250, height: 250, decoration: BoxDecoration( border: Border.all(color: AppColor.primaryColor, width: 3), borderRadius: BorderRadius.circular(12), ), ), ), Positioned( bottom: 50, left: 0, right: 0, child: Center( child: Text( "Align QR Code within the frame".tr, style: const TextStyle(color: Colors.white, fontSize: 16), ), ), ), ], ), ); } }