import 'package:flutter/material.dart'; import 'package:meals/screens/CategoriesScreen.dart'; import 'package:meals/screens/MealsScreen.dart'; import '../models/Meal.dart'; class TabsScreen extends StatefulWidget { const TabsScreen({Key? key}) : super(key: key); @override State createState() => _TabsScreenState(); } class _TabsScreenState extends State { int _selectedPageIndex = 0; final List _favoriteMeals = []; void _showInfoMessage(String message) { ScaffoldMessenger.of(context).clearSnackBars(); ScaffoldMessenger.of(context) .showSnackBar(SnackBar(content: Text(message))); } void _selectPage(int index) { setState(() { _selectedPageIndex = index; }); } void _toggleFavoriteMeal(Meal meal) { if (_favoriteMeals.contains(meal)) { setState(() { _favoriteMeals.remove(meal); }); _showInfoMessage('Meal is no longer a favorite'); } else { setState(() { _favoriteMeals.add(meal); _showInfoMessage('Meal has been added to your favorites'); }); } } @override Widget build(BuildContext context) { Widget activePage; String? activePageTitle; switch (_selectedPageIndex) { case 1: activePageTitle = 'Favorites'; activePage = MealsScreen( meals: _favoriteMeals, onToggleFavorite: _toggleFavoriteMeal, ); break; default: activePageTitle = 'Pick your category'; activePage = CategoriesScreen( onToggleFavorite: _toggleFavoriteMeal, ); } return Scaffold( appBar: AppBar(title: Text(activePageTitle)), body: activePage, bottomNavigationBar: BottomNavigationBar( onTap: _selectPage, currentIndex: _selectedPageIndex, items: const [ BottomNavigationBarItem( icon: Icon(Icons.set_meal), label: 'Categories'), BottomNavigationBarItem(icon: Icon(Icons.star), label: 'Favorites'), ], ), ); } }