mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:22:37 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:auto_route/auto_route.dart';
 | |
| import 'package:easy_localization/easy_localization.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | |
| import 'package:immich_mobile/pages/common/large_leading_tile.dart';
 | |
| import 'package:immich_mobile/providers/album/album.provider.dart';
 | |
| import 'package:immich_mobile/routing/router.dart';
 | |
| import 'package:immich_mobile/widgets/common/immich_thumbnail.dart';
 | |
| 
 | |
| @RoutePage()
 | |
| class LocalAlbumsPage extends HookConsumerWidget {
 | |
|   const LocalAlbumsPage({super.key});
 | |
|   @override
 | |
|   Widget build(BuildContext context, WidgetRef ref) {
 | |
|     final albums = ref.watch(localAlbumsProvider);
 | |
| 
 | |
|     return Scaffold(
 | |
|       appBar: AppBar(
 | |
|         title: Text('on_this_device'.tr()),
 | |
|       ),
 | |
|       body: ListView.builder(
 | |
|         padding: const EdgeInsets.all(18.0),
 | |
|         itemCount: albums.length,
 | |
|         itemBuilder: (context, index) {
 | |
|           return Padding(
 | |
|             padding: const EdgeInsets.only(bottom: 8.0),
 | |
|             child: LargeLeadingTile(
 | |
|               leadingPadding: const EdgeInsets.only(
 | |
|                 right: 16,
 | |
|               ),
 | |
|               leading: ClipRRect(
 | |
|                 borderRadius: const BorderRadius.all(Radius.circular(15)),
 | |
|                 child: ImmichThumbnail(
 | |
|                   asset: albums[index].thumbnail.value,
 | |
|                   width: 80,
 | |
|                   height: 80,
 | |
|                 ),
 | |
|               ),
 | |
|               title: Text(
 | |
|                 albums[index].name,
 | |
|                 style: context.textTheme.titleSmall?.copyWith(
 | |
|                   fontWeight: FontWeight.w600,
 | |
|                 ),
 | |
|               ),
 | |
|               subtitle: Text('${albums[index].assetCount} items'),
 | |
|               onTap: () => context
 | |
|                   .pushRoute(AlbumViewerRoute(albumId: albums[index].id)),
 | |
|             ),
 | |
|           );
 | |
|         },
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |