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 buildActions(BuildContext context) { return [ IconButton( icon: const Icon(Icons.clear), onPressed: () { query = ""; }, ), ]; } @override Widget buildLeading(BuildContext context) { return IconButton( icon: const Icon(Icons.arrow_back, color: cIconColor), onPressed: () { close(context, null); }, ); } @override Widget buildResults(BuildContext context) { List 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 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: const TextTheme( titleLarge: cSearchTextStyle, ), ); } } class FavoriteRecipeSearch extends SearchDelegate { @override List buildActions(BuildContext context) { return [ IconButton( icon: const Icon(Icons.clear), onPressed: () { query = ""; }, ), ]; } @override Widget buildLeading(BuildContext context) { return IconButton( icon: const Icon(Icons.arrow_back, color: cIconColor), onPressed: () { close(context, null); }, ); } @override Widget buildResults(BuildContext context) { List 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 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: const TextTheme( titleLarge: cSearchTextStyle, ), ); } }