fix: add price where needed
This commit is contained in:
parent
630eacc1e1
commit
60265b9735
3 changed files with 74 additions and 24 deletions
|
|
@ -72,4 +72,11 @@ class AddViewModel extends ChangeNotifier {
|
|||
id: 0,
|
||||
);
|
||||
}
|
||||
|
||||
bool _askPrice = true;
|
||||
bool get askPrice => _askPrice;
|
||||
set askPrice(bool newValue) {
|
||||
_askPrice = newValue;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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,23 +265,30 @@ class _FullyManualState extends State<_FullyManual> {
|
|||
},
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
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!);
|
||||
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();
|
||||
},
|
||||
),
|
||||
],
|
||||
|
|
|
|||
Reference in a new issue