import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/home_page_content/content.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/studio_details_data.dart'; import 'package:didvan/services/media/media.dart'; import 'package:didvan/views/direct/widgets/audio_widget.dart'; import 'package:didvan/views/podcasts/studio_details/studio_details_state.dart'; import 'package:didvan/views/widgets/didvan/card.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/skeleton_image.dart'; import 'package:flutter/material.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; import 'package:provider/provider.dart'; class MainPagePodcastItem extends StatelessWidget { final MainPageContentType content; const MainPagePodcastItem({super.key, required this.content}); @override Widget build(BuildContext context) { return GestureDetector( onTap: () async { final state = context.read(); await state.getStudioDetails( content.id, args: const StudioRequestArgs(page: 0, type: 'podcast'), ); MediaService.currentPodcast = state.studio; MediaService.handleAudioPlayback( audioSource: content.link, id: content.id, isNetworkAudio: true, isVoiceMessage: false, ); }, child: Stack( children: [ const SizedBox( height: 180, width: double.infinity, ), Positioned.fill( child: Center( child: DidvanCard( child: Row( children: [ SizedBox( width: MediaQuery.of(context).size.width / 3, ), SizedBox( width: MediaQuery.of(context).size.width * 2 / 3 - 90, child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox( width: MediaQuery.of(context).size.width * 2 / 3 - 90, child: AudioWidget( id: content.id, audioUrl: content.link, audioMetaData: StudioDetailsData( id: content.id, duration: content.duration!, title: content.title, description: '', image: content.image, link: content.link, iframe: null, createdAt: '', order: 1, marked: content.marked, comments: 0, tags: [], type: 'podcast', ), ), ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DidvanText( content.title, style: Theme.of(context).textTheme.bodyLarge, maxLines: 1, overflow: TextOverflow.ellipsis, ), Padding( padding: const EdgeInsets.symmetric(vertical: 4), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Icon( DidvanIcons.calendar_day_light, size: 16, ), DidvanText( DateTime.parse(content.subtitles[0]) .toPersianDateStr(), maxLines: 1, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.bodySmall, ), ], ), ) ], ), ], ), ), ], ), ), ), ), SkeletonImage( width: MediaQuery.of(context).size.width / 3, height: 180, imageUrl: content.image, ), ], ), ); } }