import 'package:flutter/material.dart'; import 'package:snap_and_cook_mobile/components/image/basic_network_image.dart'; import 'package:snap_and_cook_mobile/styles/text_styles/tt_commons_text_styles.dart'; import '../../domain/entities/recipe.dart'; class RecipeFullItem extends StatelessWidget { final Recipe recipe; final Function(String) onTap; const RecipeFullItem({super.key, required this.recipe, required this.onTap}); @override Widget build(BuildContext context) { return GestureDetector( onTap: () { onTap(recipe.uuid ?? ''); }, child: Card( elevation: 2, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 16), child: Text( recipe.title ?? 'Masakan', style: TTCommonsTextStyles.textLg.textSemiBold(), maxLines: 2, overflow: TextOverflow.ellipsis, ), ), BasicNetworkImage( imageUrl: recipe.image ?? 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT80b6egSM9UngjcWwCu92vjmfRQux7WcZCMQ&usqp=CAU', height: 120, width: double.infinity, boxFit: BoxFit.cover, ), const SizedBox( height: 12, ), _cookingTimeWidget(), const SizedBox( height: 12, ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( '${recipe.description}', style: TTCommonsTextStyles.textSm.textRegular(), maxLines: 1, overflow: TextOverflow.ellipsis, ), ), const SizedBox( height: 18, ), ], ), ), ); } Widget _cookingTimeWidget(){ return Row( children: [ const SizedBox(width: 8), const Icon(Icons.timer, size: 16), const SizedBox(width: 4), Text( '${recipe.cookTime ?? 0} menit', style: TTCommonsTextStyles.textSm.textRegular(), maxLines: 1, overflow: TextOverflow.ellipsis, ), const SizedBox(width: 18), const Icon(Icons.soup_kitchen, size: 16), const SizedBox(width: 4), Text( '${recipe.cookTime ?? 0} menit', style: TTCommonsTextStyles.textSm.textRegular(), maxLines: 1, overflow: TextOverflow.ellipsis, ), const SizedBox(width: 8), ], ); } }