Files
Siro/siro_rider/lib/views/home/HomePage/qr_scanner_page.dart
2026-06-10 02:44:55 +03:00

68 lines
2.1 KiB
Dart

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<QRScannerPage> {
final InvitesRewardsController controller = Get.find<InvitesRewardsController>();
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<Barcode> 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),
),
),
),
],
),
);
}
}