From 8667bd03dd3826f7ab0a21f49b90bc50e853ba8d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 20 Nov 2025 21:03:15 +0000 Subject: [PATCH] fix: improve navigation stack and ensure square cover aspect ratios Navigation fixes: - Change goNamed to pushNamed in all library browser pages - Maintains proper back navigation stack - Back button now goes step by step instead of to beginning - Prevents app from closing when navigating back from book detail Grid layout fixes: - Book covers are now always square (1.0 aspect ratio) - Overall card aspect ratio is 0.75 to provide space for text - Wrap cover in AspectRatio widget instead of using Expanded - Ensures title and author info always visible below covers - Fixes issue where book info was missing in series view --- .../view/filtered_library_items_page.dart | 9 +++++---- .../library_browser/view/library_authors_page.dart | 2 +- .../library_browser/view/library_genres_page.dart | 2 +- .../library_browser/view/library_series_page.dart | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/features/library_browser/view/filtered_library_items_page.dart b/lib/features/library_browser/view/filtered_library_items_page.dart index 0d32a2c..e370465 100644 --- a/lib/features/library_browser/view/filtered_library_items_page.dart +++ b/lib/features/library_browser/view/filtered_library_items_page.dart @@ -77,7 +77,7 @@ class FilteredLibraryItemsPage extends HookConsumerWidget { padding: const EdgeInsets.all(16), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, - childAspectRatio: 0.65, + childAspectRatio: 0.75, crossAxisSpacing: 12, mainAxisSpacing: 16, ), @@ -192,7 +192,7 @@ class LibraryItemCard extends ConsumerWidget { return InkWell( onTap: () { // Navigate to item detail page - context.goNamed( + context.pushNamed( Routes.libraryItem.name, pathParameters: {'itemId': item.id}, ); @@ -200,8 +200,9 @@ class LibraryItemCard extends ConsumerWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - // Book cover - Expanded( + // Book cover - always square + AspectRatio( + aspectRatio: 1.0, child: ClipRRect( borderRadius: BorderRadius.circular(8), child: imageUrl != null diff --git a/lib/features/library_browser/view/library_authors_page.dart b/lib/features/library_browser/view/library_authors_page.dart index 52a9feb..b84d21b 100644 --- a/lib/features/library_browser/view/library_authors_page.dart +++ b/lib/features/library_browser/view/library_authors_page.dart @@ -105,7 +105,7 @@ class AuthorCard extends HookConsumerWidget { child: InkWell( onTap: () { // Navigate to filtered items page with author filter - context.goNamed( + context.pushNamed( Routes.libraryFiltered.name, extra: { 'filter': AuthorFilter(author.id), diff --git a/lib/features/library_browser/view/library_genres_page.dart b/lib/features/library_browser/view/library_genres_page.dart index 3fbf985..e8cd02a 100644 --- a/lib/features/library_browser/view/library_genres_page.dart +++ b/lib/features/library_browser/view/library_genres_page.dart @@ -86,7 +86,7 @@ class GenreListTile extends StatelessWidget { trailing: const Icon(Icons.chevron_right), onTap: () { // Navigate to filtered items page with genre filter - context.goNamed( + context.pushNamed( Routes.libraryFiltered.name, extra: { 'filter': GenreFilter(genre), diff --git a/lib/features/library_browser/view/library_series_page.dart b/lib/features/library_browser/view/library_series_page.dart index afaddfc..b680133 100644 --- a/lib/features/library_browser/view/library_series_page.dart +++ b/lib/features/library_browser/view/library_series_page.dart @@ -110,7 +110,7 @@ class SeriesListTile extends StatelessWidget { trailing: const Icon(Icons.chevron_right), onTap: () { // Navigate to filtered items page with series filter - context.goNamed( + context.pushNamed( Routes.libraryFiltered.name, extra: { 'filter': SeriesFilter(series.id),