import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:mobiles_labs_5th_semester/domain/models/game.dart'; import 'package:mobiles_labs_5th_semester/presentation/details_page/details_page.dart'; part 'gameCard.dart'; class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Color.fromARGB(255, 46, 65, 80), appBar: AppBar( backgroundColor: Color.fromARGB(255, 56, 90, 128), title: Text( widget.title, style: const TextStyle( color: Colors.white, fontWeight: FontWeight.bold), ), ), body: const Body()); } } class Body extends StatelessWidget { const Body({super.key}); @override Widget build(BuildContext context) { final data = [ GameData( name: 'Late Shift', price: 399, description: 'Late Shift - криминальный FMV-триллер с невероятно высокими ставками. Вы окажетесь в эпицентре лондонского ограбления и выберете своё приключение в интерактивном кинофильме с меняющейся историей, ведущей к одной из семи концовок. Ваши решения определяют вас.', image: 'https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/584980/capsule_616x353.jpg?t=1697110140'), GameData( name: 'Dark Nights with Poe & Munro', price: 450, description: 'Проведите местных радиоведущих По и Манро через шесть похожих на короткометражки эпизодов сверъестественной странности и обжигающего сюжета. От создателей The Infectious Madness of Doctor Dekker и The Shapeshifting Detective.', image: 'https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1098170/capsule_616x353.jpg?t=1725541685'), GameData( name: 'Неизвестная игра', price: 999, ) ]; return Center( child: SingleChildScrollView( child: Column( children: data.map((data) { return _GameCard.fromData( data, onLike: (String title, bool isLiked) => _showSnackBar(context, title, isLiked), onTap: () => _navToDetails(context, data), ); }).toList()))); } void _showSnackBar(BuildContext context, String title, bool isLiked) { WidgetsBinding.instance.addPostFrameCallback((_) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( isLiked ? 'Вы поставили лайк игре "$title"' : 'Вы убрали лайк у игры "$title"', style: Theme.of(context) .textTheme .bodyLarge ?.copyWith(color: Colors.pink, fontWeight: FontWeight.bold), textAlign: TextAlign.center, ), backgroundColor: Colors.white, duration: const Duration(seconds: 1), )); }); } void _navToDetails(BuildContext context, GameData data) { Navigator.push( context, CupertinoPageRoute(builder: (context) => DetailsPage(data)), ); } }