mirror of
https://github.com/immich-app/immich.git
synced 2025-07-07 10:17:05 -04:00
wip: album collesction page
This commit is contained in:
parent
27d5b134ac
commit
34ea42c005
@ -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,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user