import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:seshat/ui/sell_page/view_model/sell_view_model.dart'; import 'package:seshat/ui/sell_page/widgets/manual_scan_popup.dart'; class ScanScreen extends StatefulWidget { const ScanScreen({super.key, required this.viewModel}); final SellViewModel viewModel; @override State createState() => _ScanScreenState(); } class _ScanScreenState extends State { final MobileScannerController controller = MobileScannerController( formats: [BarcodeFormat.ean13], detectionTimeoutMs: 1000, ); @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final theme = Theme.of(context); return Stack( children: [ MobileScanner( controller: controller, onDetect: (barcodes) async { widget.viewModel.showScan = false; widget.viewModel.scanBook(barcodes); controller.dispose(); }, ), SafeArea( child: Column( children: [ IconButton( onPressed: () { widget.viewModel.showScan = false; }, icon: Icon(Icons.arrow_back), ), ], ), ), Center(child: SvgPicture.asset('assets/scan-overlay.svg')), Column( mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.center, children: [ Center( child: TextButton( style: ButtonStyle( backgroundColor: WidgetStatePropertyAll(theme.cardColor), ), onPressed: () { controller.stop(); showDialog( context: context, barrierDismissible: false, builder: (context) => ManualScanPopup( viewModel: widget.viewModel, controller: controller, ), ); }, child: Text("Vendre un livre sans scanner"), ), ), SizedBox(height: 5), ], ), ], ); } }