import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/enums/product_type.dart'; import 'package:eatvio_app/core/utils/localization_utils.dart'; import 'package:eatvio_app/features/diets/presentation/widgets/info_bouble.dart'; import 'package:eatvio_app/features/diets/presentation/widgets/type_badges.dart'; import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/recipes_model.dart'; import 'package:eatvio_app/generated/l10n.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; class InfoRow extends StatelessWidget { const InfoRow({required this.type, super.key, this.diet, this.itemsBackgroundColor, this.disableDescriptionOfTypes = false, this.plan, this.recipe}); final ProductType type; final Color? itemsBackgroundColor; final Diet? diet; final PlanModel? plan; final Recipe? recipe; final bool disableDescriptionOfTypes; @override Widget build(BuildContext context) { final s = S.of(context); String? timeTitle; if (recipe != null) { final hours = recipe!.cookingTime ~/ 60; final minutes = recipe!.cookingTime % 60; if (hours > 0) { timeTitle = '$hours ${getHourForm(hours)} $minutes ${getMinuteForm(minutes)}'; } else { timeTitle = '$minutes ${getMinuteForm(minutes)}'; } } return SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 16), scrollDirection: Axis.horizontal, child: Row( children: [ InfoBouble( backgroundColor: itemsBackgroundColor, children: [ SvgPicture.asset('assets/icons/time2.svg', width: 13.3, height: 13.3), const SizedBox(width: 4), Text(switch (type) { ProductType.diet => '${diet?.duration} ${getDayForm(diet?.duration ?? 7, s)}', ProductType.plan => '${plan?.duration} ${getDayForm(plan?.duration ?? 7, s)}', ProductType.recipe => timeTitle ?? '', }, style: TextStyles.textXSSemibold.copyWith(color: appTheme.black)), ], ), const SizedBox(width: 12), if (type == ProductType.recipe) InfoBouble( backgroundColor: itemsBackgroundColor, children: [ SvgPicture.asset('assets/icons/calories.svg', width: 13.3, height: 13.3), const SizedBox(width: 4), Text('${(recipe?.calories ?? 0).toStringAsFixed(0)} ккал', style: TextStyles.textXSSemibold.copyWith(color: appTheme.black)), ], ), const SizedBox(width: 12), if (type == ProductType.recipe) InfoBouble( backgroundColor: itemsBackgroundColor, children: [ SvgPicture.asset('assets/icons/steps.svg', width: 13.3, height: 13.3), const SizedBox(width: 4), Text( '${recipe?.steps?.length ?? 0} ${getStepForm(recipe?.steps?.length ?? 0)}', style: TextStyles.textXSSemibold.copyWith(color: appTheme.black), ), ], ), if (plan?.type.hasAtLeastOneType() == true || diet?.type.hasAtLeastOneType() == true) InfoBouble( backgroundColor: itemsBackgroundColor, children: [TypeBadges(type: diet?.type, planType: plan?.type, disableDescriptionOfTypes: disableDescriptionOfTypes)], ), ], ), ); } }