import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Рецепты', theme: ThemeData( scaffoldBackgroundColor: Colors.purple[100], ), home: RecipeHome(), ); } } enum Cuisine { Italian, Indian, Chinese, Georgian } class Recipe { String name; Cuisine cuisine; List ingredients; Recipe({required this.name, required this.cuisine, required this.ingredients}); String getDetails() { return 'Рецепт: $name\nКухня: ${cuisine.toString().split('.').last}\nИнгредиенты: ${ingredients.join(', ')}'; } } class RecipeManager { List _recipes = []; Future addRecipe(T recipe) async { await Future.delayed(Duration(seconds: 1)); _recipes.add(recipe); } List getAllRecipes() => _recipes; T? getRecipeAt(int index) { if (index < _recipes.length) { return _recipes[index]; } return null; } } extension RecipeListExtension on List { void printAllRecipes() { for (var recipe in this) { print(recipe.getDetails()); } } } class RecipeHome extends StatefulWidget { @override _RecipeHomeState createState() => _RecipeHomeState(); } class _RecipeHomeState extends State { final RecipeManager _recipeManager = RecipeManager(); final TextEditingController _nameController = TextEditingController(); final TextEditingController _ingredientsController = TextEditingController(); Cuisine? _selectedCuisine; void _addRecipe() { final name = _nameController.text; final ingredients = _ingredientsController.text.split(',').map((s) => s.trim()).toList(); if (name.isNotEmpty && ingredients.isNotEmpty && _selectedCuisine != null) { final recipe = Recipe(name: name, cuisine: _selectedCuisine!, ingredients: ingredients); _recipeManager.addRecipe(recipe).then((_) { _nameController.clear(); _ingredientsController.clear(); _selectedCuisine = null; setState(() {}); }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Создание Рецептов')), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( children: [ TextField( controller: _nameController, decoration: InputDecoration(labelText: 'Название рецепта'), ), DropdownButton( hint: Text('Выберите кухню'), value: _selectedCuisine, onChanged: (Cuisine? newValue) { setState(() { _selectedCuisine = newValue; }); }, items: Cuisine.values.map((Cuisine cuisine) { return DropdownMenuItem( value: cuisine, child: Text(cuisine.toString().split('.').last), ); }).toList(), ), TextField( controller: _ingredientsController, decoration: InputDecoration(labelText: 'Ингредиенты (через запятую)'), ), SizedBox(height: 20), ElevatedButton( onPressed: _addRecipe, child: Text('Добавить Рецепт'), ), SizedBox(height: 20), Expanded( child: ListView.builder( itemCount: _recipeManager.getAllRecipes().length, itemBuilder: (context, index) { final recipe = _recipeManager.getRecipeAt(index); return ListTile( title: Text(recipe?.name ?? 'Имеется ошибка'), subtitle: Text(recipe?.getDetails() ?? ''), ); }, ), ), ], ), ), ); } }