@@ -181,6 +181,27 @@ class IngredientFormState extends State<IngredientForm> {
181
181
182
182
MealItem get mealItem => _mealItem;
183
183
184
+ // note: make sure to set _mealItem.ingredient (before/after calling this)
185
+ void selectIngredient (int id, String name, num ? amount) {
186
+ setState (() {
187
+ _mealItem.ingredientId = id;
188
+ _ingredientController.text = name;
189
+ _ingredientIdController.text = id.toString ();
190
+ if (amount != null ) {
191
+ _amountController.text = amount.toStringAsFixed (0 );
192
+ _mealItem.amount = amount;
193
+ }
194
+ });
195
+ }
196
+
197
+ // note: does not reset text search and amount inputs
198
+ void unSelectIngredient () {
199
+ setState (() {
200
+ _mealItem.ingredientId = 0 ;
201
+ _ingredientIdController.text = '' ;
202
+ });
203
+ }
204
+
184
205
@override
185
206
Widget build (BuildContext context) {
186
207
final String unit = AppLocalizations .of (context).g;
@@ -196,6 +217,8 @@ class IngredientFormState extends State<IngredientForm> {
196
217
_ingredientController,
197
218
barcode: widget.barcode,
198
219
test: widget.test,
220
+ selectIngredient: selectIngredient,
221
+ unSelectIngredient: unSelectIngredient,
199
222
),
200
223
Row (
201
224
children: [
@@ -286,7 +309,7 @@ class IngredientFormState extends State<IngredientForm> {
286
309
),
287
310
],
288
311
),
289
- if (ingredientIdController.text.isNotEmpty)
312
+ if (ingredientIdController.text.isNotEmpty && _amountController.text.isNotEmpty )
290
313
Padding (
291
314
padding: const EdgeInsets .all (8.0 ),
292
315
child: Column (
@@ -363,14 +386,9 @@ class IngredientFormState extends State<IngredientForm> {
363
386
return Card (
364
387
child: ListTile (
365
388
onTap: () {
366
- setState (() {
367
- _ingredientController.text = widget.recent[index].ingredient.name;
368
- _ingredientIdController.text =
369
- widget.recent[index].ingredient.id.toString ();
370
- _amountController.text = widget.recent[index].amount.toStringAsFixed (0 );
371
- _mealItem.ingredientId = widget.recent[index].ingredientId;
372
- _mealItem.amount = widget.recent[index].amount;
373
- });
389
+ final ingredient = widget.recent[index].ingredient;
390
+ selectIngredient (
391
+ ingredient.id, ingredient.name, widget.recent[index].amount);
374
392
},
375
393
title: Text (
376
394
'${widget .recent [index ].ingredient .name } (${widget .recent [index ].amount .toStringAsFixed (0 )}$unit )' ),
0 commit comments