diff options
Diffstat (limited to 'lib/widgets/recipe_search_delegate.dart')
-rw-r--r-- | lib/widgets/recipe_search_delegate.dart | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/lib/widgets/recipe_search_delegate.dart b/lib/widgets/recipe_search_delegate.dart new file mode 100644 index 0000000..1cb02e7 --- /dev/null +++ b/lib/widgets/recipe_search_delegate.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; + +import 'package:kulinar_app/constants.dart'; +import 'package:kulinar_app/models/recipe_class.dart'; +import 'package:kulinar_app/widgets/recipe_card_widget.dart'; +import 'package:kulinar_app/models/data/recipe_data_class.dart'; + +class RecipeSearch extends SearchDelegate { + @override + List<Widget> buildActions(BuildContext context) { + return [ + IconButton( + icon: Icon(Icons.clear), + onPressed: () { + query = ""; + }, + ), + ]; + } + + @override + Widget buildLeading(BuildContext context) { + return IconButton( + icon: Icon(Icons.arrow_back, color: cIconColor), + onPressed: () { + close(context, null); + }, + ); + } + + @override + Widget buildResults(BuildContext context) { + List<Recipe> _filteredRecipeList = RecipeData.recipeList.where((element) => element.title!.toLowerCase().contains(query.toLowerCase())).toList(); + + return ListView.builder( + itemCount: _filteredRecipeList.length, + itemBuilder: (context, index) => RecipeCard(inSearch: true, recipe: _filteredRecipeList[index]), + ); + } + + @override + Widget buildSuggestions(BuildContext context) { + List<Recipe> _filteredRecipeList = RecipeData.recipeList.where((element) => element.title!.toLowerCase().contains(query.toLowerCase())).toList(); + + return ListView.builder( + itemCount: _filteredRecipeList.length, + itemBuilder: (context, index) => RecipeCard(inSearch: true, recipe: _filteredRecipeList[index]), + ); + } + + @override + ThemeData appBarTheme(BuildContext context) { + return Theme.of(context).copyWith( + textTheme: TextTheme( + headline6: cSearchTextStyle, + ), + ); + } +} + +class FavoriteRecipeSearch extends SearchDelegate { + @override + List<Widget> buildActions(BuildContext context) { + return [ + IconButton( + icon: Icon(Icons.clear), + onPressed: () { + query = ""; + }, + ), + ]; + } + + @override + Widget buildLeading(BuildContext context) { + return IconButton( + icon: Icon(Icons.arrow_back, color: cIconColor), + onPressed: () { + close(context, null); + }, + ); + } + + @override + Widget buildResults(BuildContext context) { + List<Recipe> _filteredRecipeList = RecipeData.recipeList.where((element) => element.title!.toLowerCase().contains(query.toLowerCase()) && element.favorite).toList(); + + return ListView.builder( + itemCount: _filteredRecipeList.length, + itemBuilder: (context, index) => RecipeCard(inSearch: true, recipe: _filteredRecipeList[index]), + ); + } + + @override + Widget buildSuggestions(BuildContext context) { + List<Recipe> _filteredRecipeList = RecipeData.recipeList.where((element) => element.title!.toLowerCase().contains(query.toLowerCase()) && element.favorite).toList(); + + return ListView.builder( + itemCount: _filteredRecipeList.length, + itemBuilder: (context, index) => RecipeCard(inSearch: true, recipe: _filteredRecipeList[index]), + ); + } + + @override + ThemeData appBarTheme(BuildContext context) { + return Theme.of(context).copyWith( + textTheme: TextTheme( + headline6: cSearchTextStyle, + ), + ); + } +} |