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,
|
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> {
|
class _AddPageState extends State<AddPage> {
|
||||||
bool askPrice = true;
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final MobileScannerController controller = MobileScannerController(
|
final MobileScannerController controller = MobileScannerController(
|
||||||
|
|
@ -69,13 +68,14 @@ class _AddPageState extends State<AddPage> {
|
||||||
leading: Icon(Icons.attach_money),
|
leading: Icon(Icons.attach_money),
|
||||||
title: TextButton(
|
title: TextButton(
|
||||||
child: Text(
|
child: Text(
|
||||||
(askPrice)
|
(widget.viewModel.askPrice)
|
||||||
? "Demander à chaque fois"
|
? "Demander à chaque fois"
|
||||||
: "Prix libre toujours",
|
: "Prix libre toujours",
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
askPrice = !askPrice;
|
widget.viewModel.askPrice =
|
||||||
|
!widget.viewModel.askPrice;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,10 @@ class FormPopup extends StatelessWidget {
|
||||||
context: context,
|
context: context,
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return _ManualEANPopup(exitPopup: exitPopup);
|
return _ManualEANPopup(
|
||||||
|
exitPopup: exitPopup,
|
||||||
|
viewModel: viewModel,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
@ -60,7 +63,10 @@ class FormPopup extends StatelessWidget {
|
||||||
context: context,
|
context: context,
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return _FullyManual(exitPopup: exitPopup);
|
return _FullyManual(
|
||||||
|
exitPopup: exitPopup,
|
||||||
|
viewModel: viewModel,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
@ -90,9 +96,10 @@ class FormPopup extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ManualEANPopup extends StatefulWidget {
|
class _ManualEANPopup extends StatefulWidget {
|
||||||
const _ManualEANPopup({required this.exitPopup});
|
const _ManualEANPopup({required this.exitPopup, required this.viewModel});
|
||||||
|
|
||||||
final Function(BuildContext) exitPopup;
|
final Function(BuildContext) exitPopup;
|
||||||
|
final AddViewModel viewModel;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_ManualEANPopup> createState() => _ManualEANPopupState();
|
State<_ManualEANPopup> createState() => _ManualEANPopupState();
|
||||||
|
|
@ -101,6 +108,7 @@ class _ManualEANPopup extends StatefulWidget {
|
||||||
class _ManualEANPopupState extends State<_ManualEANPopup> {
|
class _ManualEANPopupState extends State<_ManualEANPopup> {
|
||||||
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
||||||
String? ean;
|
String? ean;
|
||||||
|
num? price;
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
|
|
@ -128,6 +136,33 @@ class _ManualEANPopupState extends State<_ManualEANPopup> {
|
||||||
return null;
|
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 {
|
class _FullyManual extends StatefulWidget {
|
||||||
const _FullyManual({required this.exitPopup});
|
const _FullyManual({required this.exitPopup, required this.viewModel});
|
||||||
|
|
||||||
final Function(BuildContext) exitPopup;
|
final Function(BuildContext) exitPopup;
|
||||||
|
final AddViewModel viewModel;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_FullyManual> createState() => _FullyManualState();
|
State<_FullyManual> createState() => _FullyManualState();
|
||||||
|
|
@ -229,7 +265,11 @@ class _FullyManualState extends State<_FullyManual> {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
TextFormField(
|
ListenableBuilder(
|
||||||
|
listenable: widget.viewModel,
|
||||||
|
builder: (context, child) {
|
||||||
|
return (widget.viewModel.askPrice)
|
||||||
|
? TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: "Prix",
|
labelText: "Prix",
|
||||||
border: OutlineInputBorder(),
|
border: OutlineInputBorder(),
|
||||||
|
|
@ -247,6 +287,9 @@ class _FullyManualState extends State<_FullyManual> {
|
||||||
onSaved: (newValue) {
|
onSaved: (newValue) {
|
||||||
price = num.parse(newValue!);
|
price = num.parse(newValue!);
|
||||||
},
|
},
|
||||||
|
)
|
||||||
|
: SizedBox();
|
||||||
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Reference in a new issue