import 'package:flutter/material.dart';
import 'package:meals/models/Meal.dart';
import 'package:meals/screens/meal_details.dart';
import 'package:meals/widgets/MealItem.dart';

class MealsScreen extends StatelessWidget {
  final String? title;
  final List<Meal> meals;

  const MealsScreen({
    super.key,
    this.title,
    required this.meals,
  });

  void _selectMeal(BuildContext buildContext, Meal meal) {
    Navigator.push(
        buildContext,
        MaterialPageRoute(
          builder: (ctx) => MealDetailScreen(
            meal: meal,
          ),
        ));
  }

  @override
  Widget build(BuildContext context) {
    final Widget content = meals.isEmpty
        ? Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Text(
                  'Oh, there is no meals right here.',
                  style: Theme.of(context).textTheme.headlineLarge!.copyWith(
                        color: Theme.of(context).colorScheme.onBackground,
                      ),
                ),
                const SizedBox(height: 16),
                Text(
                  'Would you to try something else ?',
                  style: Theme.of(context).textTheme.bodyLarge!.copyWith(
                        color: Theme.of(context).colorScheme.onBackground,
                      ),
                ),
              ],
            ),
          )
        : ListView.builder(
            itemBuilder: (BuildContext context, int index) {
              return MealItem(
                meal: meals[index],
                callbackClickOnMeal: (meal) {
                  _selectMeal(context, meal);
                },
              );
            },
            itemCount: meals.length,
          );

    return title == null
        ? content
        : Scaffold(
            appBar: AppBar(
              title: Text(title!),
            ),
            body: content,
          );
  }
}