diff --git a/lib/models/difficulty.dart b/lib/models/difficulty.dart index 288b17b..a9fcd1b 100644 --- a/lib/models/difficulty.dart +++ b/lib/models/difficulty.dart @@ -1,8 +1,8 @@ -class Difficulty { +class DifficultyUtil { static List get difficulties { - return List.generate(_Difficulty.values.length, - (index) => _Difficulty.values.elementAt(index).name); + return List.generate(Difficulty.values.length, + (index) => Difficulty.values.elementAt(index).name); } } -enum _Difficulty { veryEasy, easy, intermediate, hard, veryHard } +enum Difficulty { veryEasy, easy, intermediate, hard, veryHard } diff --git a/lib/models/recipe.dart b/lib/models/recipe.dart index bbb0b7a..0c7e26d 100644 --- a/lib/models/recipe.dart +++ b/lib/models/recipe.dart @@ -5,7 +5,7 @@ import 'steps.dart'; class Recipe { final String title; final String description; - final Difficulty? difficulty; + final DifficultyUtil? difficulty; final List ingredients = []; final Steps steps = Steps(); diff --git a/lib/pages/create_recipe_page.dart b/lib/pages/create_recipe_page.dart index db8b7e4..35b93b4 100644 --- a/lib/pages/create_recipe_page.dart +++ b/lib/pages/create_recipe_page.dart @@ -40,7 +40,9 @@ class _CreateRecipeState extends State { label: Text('Description'), ), ), - const DifficultyDropdown(), + DifficultyDropdown( + onChanged: _onChanged, + ), IngredientsWidget( width: width * 0.9, ), @@ -49,4 +51,8 @@ class _CreateRecipeState extends State { ), ); } + + void _onChanged(int index) { + _recipeDifficulty = Difficulty.values.elementAt(index); + } } diff --git a/lib/widgets/difficulty_dropdown.dart b/lib/widgets/difficulty_dropdown.dart index fdf4c3c..aa1bbfa 100644 --- a/lib/widgets/difficulty_dropdown.dart +++ b/lib/widgets/difficulty_dropdown.dart @@ -2,19 +2,26 @@ import 'package:flutter/material.dart'; import '../models/difficulty.dart'; +typedef Intcallback = void Function(int); + class DifficultyDropdown extends StatelessWidget { - const DifficultyDropdown({super.key}); + const DifficultyDropdown({super.key, this.onChanged}); + final Intcallback? onChanged; @override Widget build(BuildContext context) { - List dropdownMenuEntryList = Difficulty.difficulties - .map( - (e) => _toDropdownMenuEntry(Difficulty.difficulties.indexOf(e), e), - ) + List dropdownMenuEntryList = DifficultyUtil.difficulties + .map((e) => + _toDropdownMenuEntry(DifficultyUtil.difficulties.indexOf(e), e)) .toList(); return DropdownMenu( dropdownMenuEntries: dropdownMenuEntryList, + onSelected: (value) { + if (onChanged != null) { + onChanged!(value as int); + } + }, ); }