diff --git a/lib/models/ingredient_list_entry.dart b/lib/models/ingredient_list_entry.dart index e1643b9..2a00a39 100644 --- a/lib/models/ingredient_list_entry.dart +++ b/lib/models/ingredient_list_entry.dart @@ -8,4 +8,10 @@ class IngredientListEntry { final bool optional; IngredientListEntry(this.ingredient, this.amount, this.unit, this.optional); + + @override + operator ==(Object other) { + final i = other as IngredientListEntry; + return ingredient == i.ingredient; + } } diff --git a/lib/models/recipe.dart b/lib/models/recipe.dart index 90f8c67..a12a97f 100644 --- a/lib/models/recipe.dart +++ b/lib/models/recipe.dart @@ -1,12 +1,12 @@ import 'difficulty.dart'; -import 'ingredient.dart'; import 'cooking_step.dart'; +import 'ingredient_list_entry.dart'; class Recipe { final String title; final String description; final Difficulty? difficulty; - final List ingredients = []; + final List ingredients = []; final List steps = []; Recipe({ diff --git a/lib/pages/create_recipe_page.dart b/lib/pages/create_recipe_page.dart index c384d28..49857ee 100644 --- a/lib/pages/create_recipe_page.dart +++ b/lib/pages/create_recipe_page.dart @@ -14,12 +14,11 @@ class CreateRecipe extends StatefulWidget { } class _CreateRecipeState extends State { - late RecipeProvider recipeProvider; - final List ingredientEntries = []; + late RecipeProvider recipe; @override Widget build(BuildContext context) { - recipeProvider = Provider.of(context); + recipe = Provider.of(context); return Scaffold( appBar: AppBar( title: const Text('Create Recipe'), @@ -30,20 +29,20 @@ class _CreateRecipeState extends State { child: Column( children: [ TextFormField( - onChanged: (value) => recipeProvider.title = value, + onChanged: (value) => recipe.title = value, decoration: const InputDecoration( label: Text('Title'), ), ), TextFormField( - onChanged: (value) => recipeProvider.description = value, + onChanged: (value) => recipe.description = value, decoration: const InputDecoration( label: Text('Description'), ), ), DropdownMenu( dropdownMenuEntries: DifficultyUtil.getDropdownList(), - onSelected: (value) => recipeProvider.difficulty = value, + onSelected: (value) => recipe.difficulty = value, label: const Text('Difficulty'), ), ElevatedButton( @@ -52,7 +51,7 @@ class _CreateRecipeState extends State { ), Expanded( child: ListView.separated( - itemCount: ingredientEntries.length, + itemCount: recipe.ingredients.length, itemBuilder: _ingredientListBuilder, separatorBuilder: (context, index) => const Divider(), ), @@ -74,11 +73,11 @@ class _CreateRecipeState extends State { } void _onIngredientSubmitted(IngredientListEntry ingredient) => setState(() { - ingredientEntries.add(ingredient); + recipe.ingredients.add(ingredient); }); Widget? _ingredientListBuilder(BuildContext context, int index) { - final ingredient = ingredientEntries.elementAt(index); + final ingredient = recipe.ingredients.elementAt(index); final textTheme = Theme.of(context).textTheme.titleMedium; return Padding( padding: const EdgeInsets.symmetric(vertical: 10), @@ -103,8 +102,4 @@ class _CreateRecipeState extends State { ), ); } - - Widget _seperatorBuilder(BuildContext context, int index) { - return const Divider(indent: 20, endIndent: 20); - } } diff --git a/lib/services/providers/recipe_provider.dart b/lib/services/providers/recipe_provider.dart index 264c21c..3bc9f7d 100644 --- a/lib/services/providers/recipe_provider.dart +++ b/lib/services/providers/recipe_provider.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:rezepte/models/difficulty.dart'; -import 'package:rezepte/models/ingredient.dart'; -import 'package:rezepte/models/cooking_step.dart'; +import '../../models/difficulty.dart'; +import '../../models/cooking_step.dart'; +import '../../models/ingredient_list_entry.dart'; import '../../models/recipe.dart'; @@ -9,7 +9,7 @@ class RecipeProvider extends ChangeNotifier implements Recipe { String _title = ''; String _description = ''; Difficulty? _difficulty; - final List _ingredients = []; + final List _ingredients = []; final List _steps = []; void clearRecipe() { @@ -46,9 +46,9 @@ class RecipeProvider extends ChangeNotifier implements Recipe { } @override - List get ingredients => _ingredients; + List get ingredients => _ingredients; - void addIngredient(Ingredient ingredient) { + void addIngredient(IngredientListEntry ingredient) { _ingredients.add(ingredient); notifyListeners(); } @@ -63,7 +63,7 @@ class RecipeProvider extends ChangeNotifier implements Recipe { if (!silent) notifyListeners(); } - void removeIngredient(Ingredient ingredient, {silent = false}) { + void removeIngredient(IngredientListEntry ingredient, {silent = false}) { ingredients.removeWhere((element) => element == ingredient); if (!silent) notifyListeners(); }