import 'package:flutter/material.dart'; import 'package:leonteva_pmu/presentation/details_page/details_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:leonteva_pmu/domain/models/card.dart'; part 'card.dart'; class HomePage extends StatefulWidget { const HomePage({super.key, required this.title}); final String title; @override State createState() => _HomePageState(); } class _HomePageState extends State { final Color _color = Colors.orangeAccent; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: _color, title: Text(widget.title), ), body: const Body(), ); } } class Body extends StatelessWidget { const Body({super.key}); // ключи @override Widget build(BuildContext context) { final data = [ CardData('dish', descriptionText: 'delicious', icon: Icons.abc, imageUrl: 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg'), CardData('dish2', descriptionText: 'yes', icon: Icons.access_alarm_outlined, imageUrl: 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg'), CardData('dish3', descriptionText: 'eeee', icon: Icons.access_alarm_rounded, imageUrl: 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg'), ]; return Center( child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: data.map((data) { return _Card.fromData( data, onLike: (String title, bool isLiked) => _showSnackBar(context, title, isLiked), onTap: () => _navToDetails(context, data), ); }).toList(), ), ), ); } void _navToDetails(BuildContext context, CardData data) { Navigator.push( context, CupertinoPageRoute(builder: (context) => DetailsPage(data)), ); } void _showSnackBar(BuildContext context, String title, bool isLiked) { WidgetsBinding.instance.addPostFrameCallback((_) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( 'O! $title ${isLiked ? 'liked!' : 'disliked :('}', style: Theme.of(context).textTheme.bodyLarge, ), backgroundColor: Colors.orangeAccent, duration: const Duration(seconds: 1), )); }); } }