fix: respect view mode in detail screens, disable scale in list mode

close #631
This commit is contained in:
edde746
2026-03-05 17:38:38 +01:00
parent a4008d3d6b
commit 22a733280a
7 changed files with 73 additions and 1 deletions
+27
View File
@@ -319,6 +319,7 @@ class _HubDetailScreenState extends State<HubDetailScreen>
Builder(
builder: (context) {
final settings = context.watch<SettingsProvider>();
final isListMode = settings.viewMode == ViewMode.list;
final episodePosterMode = settings.episodePosterMode;
// Determine hub content type for layout decisions
@@ -335,6 +336,32 @@ class _HubDetailScreenState extends State<HubDetailScreen>
final useWideLayout =
episodePosterMode == EpisodePosterMode.episodeThumbnail && (isEpisodeOnlyHub || isMixedHub);
if (isListMode) {
return SliverPadding(
padding: const EdgeInsets.all(8),
sliver: SliverList.builder(
itemCount: _filteredItems.length,
itemBuilder: (context, index) {
final item = _filteredItems[index];
final focusNode = index == 0
? firstItemFocusNode
: getGridItemFocusNode(index, prefix: 'hub_detail_item');
return FocusableMediaCard(
focusNode: focusNode,
item: item,
disableScale: true,
onRefresh: _handleItemRefresh,
onNavigateUp: index == 0 ? navigateToAppBar : null,
onBack: handleBackFromContent,
onFocusChange: (hasFocus) => trackGridItemFocus(index, hasFocus),
mixedHubContext: isMixedHub,
);
},
),
);
}
return SliverPadding(
padding: const EdgeInsets.all(8),
sliver: SliverLayoutBuilder(