feat: drift album page (#19564)

* feat: drift album page

* feat: page renderred

* feat: asset count

* refactor: use statefulwidget

* refactor: private widgets

* refactor: service layer

* refactor: import

* feat: get owner name

* pr feedback

* pr feedback

* pr feedback

* pr feedback
This commit is contained in:
Alex 2025-06-30 21:24:50 -05:00 committed by GitHub
parent bb8755021d
commit 3f330c6476
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 1135 additions and 25 deletions

View file

@ -10,20 +10,39 @@ import 'package:octo_image/octo_image.dart';
class Thumbnail extends StatelessWidget {
const Thumbnail({
required this.asset,
this.asset,
this.remoteId,
this.size = const Size.square(256),
this.fit = BoxFit.cover,
super.key,
});
}) : assert(
asset != null || remoteId != null,
'Either asset or remoteId must be provided',
);
final BaseAsset asset;
final BaseAsset? asset;
final String? remoteId;
final Size size;
final BoxFit fit;
static ImageProvider imageProvider({
required BaseAsset asset,
BaseAsset? asset,
String? remoteId,
Size size = const Size.square(256),
}) {
assert(
asset != null || remoteId != null,
'Either asset or remoteId must be provided',
);
if (remoteId != null) {
return RemoteThumbProvider(
assetId: remoteId,
height: size.height,
width: size.width,
);
}
if (asset is LocalAsset) {
return LocalThumbProvider(
asset: asset,
@ -47,7 +66,8 @@ class Thumbnail extends StatelessWidget {
Widget build(BuildContext context) {
final thumbHash =
asset is RemoteAsset ? (asset as RemoteAsset).thumbHash : null;
final provider = imageProvider(asset: asset, size: size);
final provider =
imageProvider(asset: asset, remoteId: remoteId, size: size);
return OctoImage.fromSet(
image: provider,