import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/core/utils/localization_utils.dart'; import 'package:eatvio_app/core/widgets/custom_divider.dart'; import 'package:eatvio_app/core/widgets/main_background_bouble.dart'; import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; import 'package:eatvio_app/core/widgets/item_widget.dart'; import 'package:eatvio_app/generated/l10n.dart'; import 'package:flutter/material.dart'; class OptionWidget extends StatelessWidget { const OptionWidget({super.key, required this.option, this.disableDuration = false}); final PacketOptions? option; final bool disableDuration; @override Widget build(BuildContext context) { if (option == null) { return const SizedBox.shrink(); } return MainBackgroundBouble( padding: const EdgeInsets.symmetric(horizontal: 16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 16), Text( option?.short ?? '', style: TextStyles.headingXLSemibold.copyWith(color: appTheme.black), ), const SizedBox(height: 12), Text( option?.description ?? '', style: TextStyles.textSMedium.copyWith(color: appTheme.black), ), const SizedBox(height: 12), if (!disableDuration) ...[ const _OptionDurationWidget(duration: 7), const SizedBox(height: 16), ], const CustomDivider(), const SizedBox(height: 16), ListView.separated( physics: const NeverScrollableScrollPhysics(), separatorBuilder: (context, index) => const SizedBox(height: 12), itemBuilder: (context, index) => ItemWidget(text: option?.items[index] ?? ''), itemCount: option?.items.length ?? 0, shrinkWrap: true, ), ], ), ); } } class _OptionDurationWidget extends StatelessWidget { const _OptionDurationWidget({required this.duration}); final int duration; @override Widget build(BuildContext context) { final s = S.of(context); return Container( decoration: BoxDecoration(borderRadius: BorderRadius.circular(4), color: appTheme.cardBackground), child: Row( children: [ Padding( padding: const EdgeInsets.symmetric(vertical: 4), child: Container( width: 4, height: 20, decoration: BoxDecoration( color: appTheme.blueA400, borderRadius: const BorderRadius.only( topRight: Radius.circular(100), bottomRight: Radius.circular(100), ), ), ), ), const SizedBox( width: 12, ), Text( '${s.option_duration} $duration ${getDayForm(duration, s)}', style: TextStyles.textSMedium.copyWith(color: appTheme.black), ), const SizedBox( width: 12, ), ], ), ); } }