From bbed9cb82b95900d548cdf56fe5e26f152890d37 Mon Sep 17 00:00:00 2001 From: PartyDonut Date: Sat, 11 Oct 2025 20:11:03 +0200 Subject: [PATCH] chore: Season posters --- .../details_screens/series_detail_screen.dart | 1 - lib/screens/shared/media/season_row.dart | 27 +++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/screens/details_screens/series_detail_screen.dart b/lib/screens/details_screens/series_detail_screen.dart index 62f3df8..d3e1ed1 100644 --- a/lib/screens/details_screens/series_detail_screen.dart +++ b/lib/screens/details_screens/series_detail_screen.dart @@ -173,7 +173,6 @@ class _SeriesDetailScreenState extends ConsumerState { SeasonsRow( contentPadding: padding, seasons: details.seasons, - onSeasonPressed: (season) => season.navigateTo(context), ), if (details.overview.people.isNotEmpty) PeopleRow( diff --git a/lib/screens/shared/media/season_row.dart b/lib/screens/shared/media/season_row.dart index 62c3dd4..d402d5d 100644 --- a/lib/screens/shared/media/season_row.dart +++ b/lib/screens/shared/media/season_row.dart @@ -10,6 +10,7 @@ import 'package:fladder/util/fladder_image.dart'; import 'package:fladder/util/focus_provider.dart'; import 'package:fladder/util/item_base_model/item_base_model_extensions.dart'; import 'package:fladder/util/localization_helper.dart'; +import 'package:fladder/util/refresh_state.dart'; import 'package:fladder/widgets/shared/clickable_text.dart'; import 'package:fladder/widgets/shared/horizontal_list.dart'; import 'package:fladder/widgets/shared/item_actions.dart'; @@ -18,12 +19,10 @@ import 'package:fladder/widgets/shared/status_card.dart'; class SeasonsRow extends ConsumerWidget { final EdgeInsets contentPadding; - final ValueChanged? onSeasonPressed; final List? seasons; const SeasonsRow({ super.key, - this.onSeasonPressed, required this.seasons, this.contentPadding = const EdgeInsets.symmetric(horizontal: 16), }); @@ -42,7 +41,6 @@ class SeasonsRow extends ConsumerWidget { final season = (seasons ?? [])[index]; return SeasonPoster( season: season, - onSeasonPressed: onSeasonPressed, ); }, ); @@ -51,12 +49,12 @@ class SeasonsRow extends ConsumerWidget { class SeasonPoster extends ConsumerWidget { final SeasonModel season; - final ValueChanged? onSeasonPressed; - const SeasonPoster({required this.season, this.onSeasonPressed, super.key}); + const SeasonPoster({required this.season, super.key}); @override Widget build(BuildContext context, WidgetRef ref) { + final myKey = key ?? UniqueKey(); Padding placeHolder(String title) { return Padding( padding: const EdgeInsets.all(4), @@ -86,11 +84,14 @@ class SeasonPoster extends ConsumerWidget { child: Stack( children: [ Positioned.fill( - child: FladderImage( - image: season.getPosters?.primary ?? - season.parentImages?.backDrop?.firstOrNull ?? - season.parentImages?.primary, - placeHolder: placeHolder(season.name), + child: Hero( + tag: myKey, + child: FladderImage( + image: season.getPosters?.primary ?? + season.parentImages?.backDrop?.firstOrNull ?? + season.parentImages?.primary, + placeHolder: placeHolder(season.name), + ), ), ), if (season.images?.primary == null) @@ -151,7 +152,11 @@ class SeasonPoster extends ConsumerWidget { position: position, items: season.generateActions(context, ref).popupMenuItems(useIcons: true)); }, - onTap: () => onSeasonPressed?.call(season), + onTap: () async { + await season.navigateTo(context, ref: ref, tag: myKey); + if (!context.mounted) return; + context.refreshData(); + }, onLongPress: AdaptiveLayout.inputDeviceOf(context) == InputDevice.touch ? () { showBottomSheetPill(