fix: add price where needed

This commit is contained in:
Alzalia 2025-08-05 12:38:29 +02:00
parent 630eacc1e1
commit 60265b9735
3 changed files with 74 additions and 24 deletions

View file

@ -72,4 +72,11 @@ class AddViewModel extends ChangeNotifier {
id: 0,
);
}
bool _askPrice = true;
bool get askPrice => _askPrice;
set askPrice(bool newValue) {
_askPrice = newValue;
notifyListeners();
}
}

View file

@ -16,7 +16,6 @@ class AddPage extends StatefulWidget {
}
class _AddPageState extends State<AddPage> {
bool askPrice = true;
@override
Widget build(BuildContext context) {
final MobileScannerController controller = MobileScannerController(
@ -69,13 +68,14 @@ class _AddPageState extends State<AddPage> {
leading: Icon(Icons.attach_money),
title: TextButton(
child: Text(
(askPrice)
(widget.viewModel.askPrice)
? "Demander à chaque fois"
: "Prix libre toujours",
),
onPressed: () {
setState(() {
askPrice = !askPrice;
widget.viewModel.askPrice =
!widget.viewModel.askPrice;
});
},
),

View file

@ -29,7 +29,10 @@ class FormPopup extends StatelessWidget {
context: context,
barrierDismissible: false,
builder: (context) {
return _ManualEANPopup(exitPopup: exitPopup);
return _ManualEANPopup(
exitPopup: exitPopup,
viewModel: viewModel,
);
},
);
},
@ -60,7 +63,10 @@ class FormPopup extends StatelessWidget {
context: context,
barrierDismissible: false,
builder: (context) {
return _FullyManual(exitPopup: exitPopup);
return _FullyManual(
exitPopup: exitPopup,
viewModel: viewModel,
);
},
);
},
@ -90,9 +96,10 @@ class FormPopup extends StatelessWidget {
}
class _ManualEANPopup extends StatefulWidget {
const _ManualEANPopup({required this.exitPopup});
const _ManualEANPopup({required this.exitPopup, required this.viewModel});
final Function(BuildContext) exitPopup;
final AddViewModel viewModel;
@override
State<_ManualEANPopup> createState() => _ManualEANPopupState();
@ -101,6 +108,7 @@ class _ManualEANPopup extends StatefulWidget {
class _ManualEANPopupState extends State<_ManualEANPopup> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
String? ean;
num? price;
@override
Widget build(BuildContext context) {
return AlertDialog(
@ -128,6 +136,33 @@ class _ManualEANPopupState extends State<_ManualEANPopup> {
return null;
},
),
SizedBox(height: 10),
ListenableBuilder(
listenable: widget.viewModel,
builder: (context, child) {
return (widget.viewModel.askPrice)
? TextFormField(
decoration: InputDecoration(
labelText: "Prix",
border: OutlineInputBorder(),
suffixText: "",
),
keyboardType: TextInputType.number,
validator: (value) {
if (value == null || value.isEmpty) {
return "Indiquez un prix";
} else if (num.tryParse(value) == null) {
return "Le prix doit être un nombre";
}
return null;
},
onSaved: (newValue) {
price = num.parse(newValue!);
},
)
: SizedBox();
},
),
],
),
),
@ -153,9 +188,10 @@ class _ManualEANPopupState extends State<_ManualEANPopup> {
}
class _FullyManual extends StatefulWidget {
const _FullyManual({required this.exitPopup});
const _FullyManual({required this.exitPopup, required this.viewModel});
final Function(BuildContext) exitPopup;
final AddViewModel viewModel;
@override
State<_FullyManual> createState() => _FullyManualState();
@ -229,7 +265,11 @@ class _FullyManualState extends State<_FullyManual> {
},
),
SizedBox(height: 10),
TextFormField(
ListenableBuilder(
listenable: widget.viewModel,
builder: (context, child) {
return (widget.viewModel.askPrice)
? TextFormField(
decoration: InputDecoration(
labelText: "Prix",
border: OutlineInputBorder(),
@ -247,6 +287,9 @@ class _FullyManualState extends State<_FullyManual> {
onSaved: (newValue) {
price = num.parse(newValue!);
},
)
: SizedBox();
},
),
],
),