wip: album collesction page

This commit is contained in:
Alex 2024-09-06 16:16:06 -05:00
parent 27d5b134ac
commit 34ea42c005
No known key found for this signature in database
GPG Key ID: 53CD082B3A5E1082

View File

@ -6,10 +6,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/providers/album/album.provider.dart'; import 'package:immich_mobile/providers/album/album.provider.dart';
import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart'; import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
import 'package:immich_mobile/providers/server_info.provider.dart';
import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/widgets/album/album_thumbnail_card.dart'; import 'package:immich_mobile/widgets/album/album_thumbnail_card.dart';
import 'package:immich_mobile/widgets/common/immich_app_bar.dart';
@RoutePage() @RoutePage()
class AlbumsCollectionPage extends HookConsumerWidget { class AlbumsCollectionPage extends HookConsumerWidget {
@ -35,92 +33,94 @@ class AlbumsCollectionPage extends HookConsumerWidget {
appBar: AppBar( appBar: AppBar(
title: const Text("Albums"), title: const Text("Albums"),
), ),
body: CustomScrollView( body: SafeArea(
slivers: [ child: CustomScrollView(
const SliverToBoxAdapter( slivers: [
child: Padding( const SliverToBoxAdapter(
padding: EdgeInsets.only( child: Padding(
top: 12.0, padding: EdgeInsets.only(
left: 12.0, top: 12.0,
right: 12.0, left: 12.0,
bottom: 20.0, right: 12.0,
), bottom: 20.0,
child: Row( ),
mainAxisAlignment: MainAxisAlignment.spaceBetween, child: Row(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
SortButton(), children: [
], SortButton(),
],
),
), ),
), ),
), SliverPadding(
SliverPadding( padding: const EdgeInsets.all(12.0),
padding: const EdgeInsets.all(12.0), sliver: SliverGrid(
sliver: SliverGrid( gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( maxCrossAxisExtent: 250,
maxCrossAxisExtent: 250, mainAxisSpacing: 12,
mainAxisSpacing: 12, crossAxisSpacing: 12,
crossAxisSpacing: 12, childAspectRatio: .7,
childAspectRatio: .7, ),
delegate: SliverChildBuilderDelegate(
childCount: sorted.length,
(context, index) {
return AlbumThumbnailCard(
album: sorted[index],
onTap: () => context.pushRoute(
AlbumViewerRoute(
albumId: sorted[index].id,
),
),
);
},
),
), ),
delegate: SliverChildBuilderDelegate( ),
childCount: sorted.length, SliverToBoxAdapter(
(context, index) { child: Padding(
return AlbumThumbnailCard( padding: const EdgeInsets.only(
album: sorted[index], top: 12.0,
left: 12.0,
right: 12.0,
bottom: 20.0,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'library_page_device_albums',
style: context.textTheme.bodyLarge?.copyWith(
fontWeight: FontWeight.w500,
),
).tr(),
],
),
),
),
SliverPadding(
padding: const EdgeInsets.all(12.0),
sliver: SliverGrid(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 250,
mainAxisSpacing: 12,
crossAxisSpacing: 12,
childAspectRatio: .7,
),
delegate: SliverChildBuilderDelegate(
childCount: local.length,
(context, index) => AlbumThumbnailCard(
album: local[index],
onTap: () => context.pushRoute( onTap: () => context.pushRoute(
AlbumViewerRoute( AlbumViewerRoute(
albumId: sorted[index].id, albumId: local[index].id,
), ),
), ),
);
},
),
),
),
SliverToBoxAdapter(
child: Padding(
padding: const EdgeInsets.only(
top: 12.0,
left: 12.0,
right: 12.0,
bottom: 20.0,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'library_page_device_albums',
style: context.textTheme.bodyLarge?.copyWith(
fontWeight: FontWeight.w500,
),
).tr(),
],
),
),
),
SliverPadding(
padding: const EdgeInsets.all(12.0),
sliver: SliverGrid(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 250,
mainAxisSpacing: 12,
crossAxisSpacing: 12,
childAspectRatio: .7,
),
delegate: SliverChildBuilderDelegate(
childCount: local.length,
(context, index) => AlbumThumbnailCard(
album: local[index],
onTap: () => context.pushRoute(
AlbumViewerRoute(
albumId: local[index].id,
),
), ),
), ),
), ),
), ),
), ],
], ),
), ),
); );
} }
@ -182,15 +182,12 @@ class SortButton extends ConsumerWidget {
albumSortIsReverse albumSortIsReverse
? Icons.arrow_downward_rounded ? Icons.arrow_downward_rounded
: Icons.arrow_upward_rounded, : Icons.arrow_upward_rounded,
size: 14, size: 18,
color: context.primaryColor,
), ),
), ),
Text( Text(
albumSortOption.label.tr(), albumSortOption.label.tr(),
style: context.textTheme.labelLarge?.copyWith( style: context.textTheme.labelLarge?.copyWith(),
color: context.primaryColor,
),
), ),
], ],
), ),