mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	* chore: bump dart sdk to 3.8 * chore: make build * make pigeon * chore: format files --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:auto_route/auto_route.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:flutter_hooks/flutter_hooks.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
import 'package:immich_mobile/entities/album.entity.dart';
 | 
						|
import 'package:immich_mobile/entities/asset.entity.dart';
 | 
						|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | 
						|
import 'package:immich_mobile/extensions/theme_extensions.dart';
 | 
						|
import 'package:immich_mobile/repositories/album_media.repository.dart';
 | 
						|
import 'package:immich_mobile/widgets/common/immich_thumbnail.dart';
 | 
						|
 | 
						|
@RoutePage()
 | 
						|
class AlbumPreviewPage extends HookConsumerWidget {
 | 
						|
  final Album album;
 | 
						|
  const AlbumPreviewPage({super.key, required this.album});
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context, WidgetRef ref) {
 | 
						|
    final assets = useState<List<Asset>>([]);
 | 
						|
 | 
						|
    getAssetsInAlbum() async {
 | 
						|
      assets.value = await ref.read(albumMediaRepositoryProvider).getAssets(album.localId!);
 | 
						|
    }
 | 
						|
 | 
						|
    useEffect(() {
 | 
						|
      getAssetsInAlbum();
 | 
						|
      return null;
 | 
						|
    }, []);
 | 
						|
 | 
						|
    return Scaffold(
 | 
						|
      appBar: AppBar(
 | 
						|
        elevation: 0,
 | 
						|
        title: Column(
 | 
						|
          children: [
 | 
						|
            Text(album.name, style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold)),
 | 
						|
            Padding(
 | 
						|
              padding: const EdgeInsets.only(top: 4.0),
 | 
						|
              child: Text(
 | 
						|
                "ID ${album.id}",
 | 
						|
                style: TextStyle(
 | 
						|
                  fontSize: 10,
 | 
						|
                  color: context.colorScheme.onSurfaceSecondary,
 | 
						|
                  fontWeight: FontWeight.bold,
 | 
						|
                ),
 | 
						|
              ),
 | 
						|
            ),
 | 
						|
          ],
 | 
						|
        ),
 | 
						|
        leading: IconButton(onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_new_rounded)),
 | 
						|
      ),
 | 
						|
      body: GridView.builder(
 | 
						|
        gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
 | 
						|
          crossAxisCount: 5,
 | 
						|
          crossAxisSpacing: 2,
 | 
						|
          mainAxisSpacing: 2,
 | 
						|
        ),
 | 
						|
        itemCount: assets.value.length,
 | 
						|
        itemBuilder: (context, index) {
 | 
						|
          return ImmichThumbnail(asset: assets.value[index], width: 100, height: 100);
 | 
						|
        },
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |