feat: add an owner + sell screen

This commit is contained in:
Alzalia 2025-08-08 19:42:50 +02:00
parent d2cbb43bcb
commit 073f8bd334
15 changed files with 354 additions and 82 deletions

View file

@ -0,0 +1,73 @@
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 {
ScanScreen({super.key, required this.viewModel});
SellViewModel viewModel;
@override
State<ScanScreen> createState() => _ScanScreenState();
}
class _ScanScreenState extends State<ScanScreen> {
final MobileScannerController controller = MobileScannerController(
formats: [BarcodeFormat.ean13],
detectionTimeoutMs: 1000,
);
@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: () {
showDialog(
context: context,
barrierDismissible: false,
builder: (context) =>
ManualScanPopup(viewModel: widget.viewModel),
);
},
child: Text("Vendre un livre sans scanner"),
),
),
SizedBox(height: 5),
],
),
],
);
}
}