import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:seshat/ui/add_page/view_model/add_view_model.dart'; import 'package:seshat/ui/add_page/widgets/form_popup.dart'; import 'package:seshat/ui/add_page/widgets/owner_popup.dart'; import 'package:seshat/ui/core/ui/navigation_bar.dart'; class AddPage extends StatefulWidget { const AddPage({super.key, required this.viewModel}); final AddViewModel viewModel; @override State createState() => _AddPageState(); } class _AddPageState extends State { @override Widget build(BuildContext context) { final MobileScannerController controller = MobileScannerController( formats: [BarcodeFormat.ean13], detectionTimeoutMs: 1000, ); final theme = Theme.of(context); // return Consumer( // builder: (context, screen, child) { return Scaffold( bottomNavigationBar: AppNavigationBar(startIndex: 1), body: Stack( children: [ ColoredBox(color: Colors.black), MobileScanner( controller: controller, onDetect: (barcodes) { onBarcodeScan(barcodes, controller); }, ), SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Center( child: Card( margin: EdgeInsets.symmetric(horizontal: 50), child: Column( children: [ ListenableBuilder( listenable: widget.viewModel, builder: (context, child) => ListTile( leading: Icon(Icons.person), title: TextButton( child: Text( (widget.viewModel.currentOwner == null) ? "Aucun" : "${widget.viewModel.currentOwner!.firstName} ${widget.viewModel.currentOwner!.lastName}", ), onPressed: () => _ownerDialogBuilder( context, controller, widget.viewModel, ), ), ), ), ListTile( leading: Icon(Icons.attach_money), title: TextButton( child: Text( (widget.viewModel.askPrice) ? "Demander à chaque fois" : "Prix libre toujours", ), onPressed: () { setState(() { widget.viewModel.askPrice = !widget.viewModel.askPrice; }); }, ), ), ], ), ), ), Expanded(child: SizedBox()), SvgPicture.asset('assets/scan-overlay.svg'), Expanded(child: SizedBox()), TextButton( style: ButtonStyle( backgroundColor: WidgetStatePropertyAll(theme.cardColor), ), onPressed: () => _formDialogBuilder(context, controller, widget.viewModel), child: Text("Enregistrer manuellement"), ), ], ), ), ], ), ); // }, // ); } } void onBarcodeScan( BarcodeCapture barcodes, MobileScannerController controller, ) { return; } Future _formDialogBuilder( BuildContext context, MobileScannerController controller, AddViewModel viewModel, ) { controller.stop(); void exitPopup(BuildContext localContext) { Navigator.of(localContext).pop(); controller.start(); } return showDialog( context: context, barrierDismissible: false, builder: (context) => FormPopup(viewModel: viewModel, exitPopup: exitPopup), ); } Future _ownerDialogBuilder( BuildContext context, MobileScannerController controller, AddViewModel viewModel, ) { controller.stop(); void onPressAccept(BuildContext localContext) { Navigator.of(localContext).pop(); controller.start(); } return showDialog( context: context, barrierDismissible: false, builder: (context) => OwnerPopup(viewModel: viewModel, onPressAccept: onPressAccept), ); }