aboutsummaryrefslogtreecommitdiff
path: root/lib/widgets/recipe_search_delegate.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/widgets/recipe_search_delegate.dart')
-rw-r--r--lib/widgets/recipe_search_delegate.dart112
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,
+ ),
+ );
+ }
+}