Files
2024-03-12 08:57:09 +01:00

57 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_navigation/data/dummy_data.dart';
import 'package:flutter_navigation/screens/meals.dart';
import '../models/category.dart';
import '../models/meal.dart';
import '../widgets/category_grid_item.dart';
class CategoriesScreen extends StatelessWidget {
const CategoriesScreen({
super.key,
required this.onToggleFavorites,
required this.availableMeals,
});
final void Function(Meal meal) onToggleFavorites;
final List<Meal> availableMeals;
void _selectCategory(BuildContext context, Category category) {
final filteredMeals = availableMeals
.where((meal) => meal.categories.contains(category.id))
.toList();
Navigator.of(context).push(
MaterialPageRoute(
builder: (ctx) => MealsScreen(
title: category.title,
meals: filteredMeals,
onToggleFavorites: onToggleFavorites,
),
),
); //Navigator.push(context, route);
}
@override
Widget build(BuildContext context) {
return GridView(
padding: const EdgeInsets.all(24),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 3 / 2,
crossAxisSpacing: 20,
mainAxisSpacing: 20,
),
children: [
for (final category in availableCategories)
CategoryGridItem(
category: category,
onSelectCategory: () {
_selectCategory(context, category);
},
)
],
);
}
}