fix: flow on scan + owners managment
This commit is contained in:
parent
70146055df
commit
86094b5d76
10 changed files with 283 additions and 130 deletions
|
|
@ -1,11 +1,13 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:mobile_scanner/mobile_scanner.dart';
|
||||
import 'package:seshat/domain/models/book.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/add_page/widgets/price_popup.dart';
|
||||
import 'package:seshat/ui/add_page/widgets/confirmation_popup.dart';
|
||||
import 'package:seshat/ui/core/ui/navigation_bar.dart';
|
||||
import 'package:seshat/utils/result.dart';
|
||||
|
||||
class AddPage extends StatefulWidget {
|
||||
const AddPage({super.key, required this.viewModel});
|
||||
|
|
@ -36,27 +38,33 @@ class _AddPageState extends State<AddPage> {
|
|||
MobileScanner(
|
||||
controller: controller,
|
||||
onDetect: (barcodes) async {
|
||||
void setPrice(num newPrice) {
|
||||
void setPrice(num newPrice) async {
|
||||
setState(() {
|
||||
price = newPrice;
|
||||
});
|
||||
}
|
||||
|
||||
if (widget.viewModel.askPrice) {
|
||||
await _priceDialogBuilder(context, setPrice, controller);
|
||||
} else {
|
||||
setPrice(0);
|
||||
}
|
||||
Result<Book> result = await widget.viewModel.scanBook(barcodes);
|
||||
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
"Envoyé : ${barcodes.barcodes.first.rawValue} pour $price€",
|
||||
),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
),
|
||||
);
|
||||
debugPrint(price.toString());
|
||||
switch (result) {
|
||||
case Ok():
|
||||
await _confirmationDialogBuilder(
|
||||
context,
|
||||
setPrice,
|
||||
controller,
|
||||
widget.viewModel,
|
||||
result.value,
|
||||
);
|
||||
break;
|
||||
case Error():
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text("Erreur : ${result.error}"),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
),
|
||||
);
|
||||
break;
|
||||
}
|
||||
},
|
||||
),
|
||||
SafeArea(
|
||||
|
|
@ -128,10 +136,12 @@ class _AddPageState extends State<AddPage> {
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> _priceDialogBuilder(
|
||||
Future<void> _confirmationDialogBuilder(
|
||||
BuildContext context,
|
||||
Function(num) setPrice,
|
||||
MobileScannerController controller,
|
||||
AddViewModel viewModel,
|
||||
Book book,
|
||||
) {
|
||||
controller.stop();
|
||||
|
||||
|
|
@ -143,7 +153,12 @@ Future<void> _priceDialogBuilder(
|
|||
return showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => PricePopup(exitPopup: exitPopup, setPrice: setPrice),
|
||||
builder: (context) => ConfirmationPopup(
|
||||
exitPopup: exitPopup,
|
||||
setPrice: setPrice,
|
||||
viewModel: viewModel,
|
||||
book: book,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Reference in a new issue