You've already forked immich
mirror of
https://github.com/immich-app/immich.git
synced 2025-08-10 23:22:22 +02:00
55 lines
1.6 KiB
Dart
55 lines
1.6 KiB
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/presentation/widgets/images/thumbnail.widget.dart';
|
||
|
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
||
|
|
||
|
class LocalAlbumThumbnail extends ConsumerWidget {
|
||
|
const LocalAlbumThumbnail({
|
||
|
super.key,
|
||
|
required this.albumId,
|
||
|
});
|
||
|
|
||
|
final String albumId;
|
||
|
@override
|
||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||
|
final localAlbumThumbnail = ref.watch(localAlbumThumbnailProvider(albumId));
|
||
|
return localAlbumThumbnail.when(
|
||
|
data: (data) {
|
||
|
if (data == null) {
|
||
|
return Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: context.colorScheme.surfaceContainer,
|
||
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||
|
border: Border.all(
|
||
|
color: context.colorScheme.outline.withAlpha(50),
|
||
|
width: 1,
|
||
|
),
|
||
|
),
|
||
|
child: Icon(
|
||
|
Icons.collections,
|
||
|
size: 24,
|
||
|
color: context.primaryColor,
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return ClipRRect(
|
||
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||
|
child: Thumbnail(
|
||
|
asset: data,
|
||
|
),
|
||
|
);
|
||
|
},
|
||
|
error: (error, stack) {
|
||
|
return const Icon(Icons.error, size: 24);
|
||
|
},
|
||
|
loading: () => const SizedBox(
|
||
|
width: 24,
|
||
|
height: 24,
|
||
|
child: Center(child: CircularProgressIndicator()),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|