💄 Optimize cloud file rendering
This commit is contained in:
@@ -812,11 +812,16 @@ class _CloudFileListEntry extends HookConsumerWidget {
|
|||||||
final lockedByDS = dataSaving && !showDataSaving.value;
|
final lockedByDS = dataSaving && !showDataSaving.value;
|
||||||
final lockedByMature = file.sensitiveMarks.isNotEmpty && !showMature.value;
|
final lockedByMature = file.sensitiveMarks.isNotEmpty && !showMature.value;
|
||||||
final meta = file.fileMeta is Map ? file.fileMeta as Map : const {};
|
final meta = file.fileMeta is Map ? file.fileMeta as Map : const {};
|
||||||
|
final hasRatio =
|
||||||
|
meta.containsKey('ratio') &&
|
||||||
|
(meta['ratio'] is num && (meta['ratio'] as num) != 0);
|
||||||
final ratio =
|
final ratio =
|
||||||
(meta['ratio'] is num && (meta['ratio'] as num) != 0)
|
(meta['ratio'] is num && (meta['ratio'] as num) != 0)
|
||||||
? (meta['ratio'] as num).toDouble()
|
? (meta['ratio'] as num).toDouble()
|
||||||
: 1.0;
|
: 1.0;
|
||||||
|
|
||||||
|
final fit = hasRatio ? BoxFit.cover : BoxFit.contain;
|
||||||
|
|
||||||
Widget bg = const SizedBox.shrink();
|
Widget bg = const SizedBox.shrink();
|
||||||
if (isImage) {
|
if (isImage) {
|
||||||
if (meta['blur'] is String) {
|
if (meta['blur'] is String) {
|
||||||
@@ -825,6 +830,7 @@ class _CloudFileListEntry extends HookConsumerWidget {
|
|||||||
bg = ImageFiltered(
|
bg = ImageFiltered(
|
||||||
imageFilter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
imageFilter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||||
child: CloudFileWidget(
|
child: CloudFileWidget(
|
||||||
|
fit: fit,
|
||||||
item: file,
|
item: file,
|
||||||
noBlurhash: true,
|
noBlurhash: true,
|
||||||
useInternalGate: false,
|
useInternalGate: false,
|
||||||
@@ -843,13 +849,13 @@ class _CloudFileListEntry extends HookConsumerWidget {
|
|||||||
item: file,
|
item: file,
|
||||||
heroTag: heroTag,
|
heroTag: heroTag,
|
||||||
noBlurhash: true,
|
noBlurhash: true,
|
||||||
fit: BoxFit.contain,
|
fit: fit,
|
||||||
useInternalGate: false,
|
useInternalGate: false,
|
||||||
)
|
)
|
||||||
: CloudFileWidget(
|
: CloudFileWidget(
|
||||||
item: file,
|
item: file,
|
||||||
heroTag: heroTag,
|
heroTag: heroTag,
|
||||||
fit: BoxFit.contain,
|
fit: fit,
|
||||||
useInternalGate: false,
|
useInternalGate: false,
|
||||||
))
|
))
|
||||||
: AspectRatio(aspectRatio: ratio, child: const SizedBox.shrink());
|
: AspectRatio(aspectRatio: ratio, child: const SizedBox.shrink());
|
||||||
|
@@ -31,35 +31,31 @@ class UniversalImage extends StatelessWidget {
|
|||||||
height != null ? (height! * devicePixelRatio).round() : null;
|
height != null ? (height! * devicePixelRatio).round() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SizedBox(
|
return Stack(
|
||||||
width: width,
|
fit: StackFit.expand,
|
||||||
height: height,
|
children: [
|
||||||
child: Stack(
|
if (blurHash != null) BlurHash(hash: blurHash!),
|
||||||
fit: StackFit.expand,
|
CachedNetworkImage(
|
||||||
children: [
|
imageUrl: uri,
|
||||||
if (blurHash != null) BlurHash(hash: blurHash!),
|
fit: fit,
|
||||||
CachedNetworkImage(
|
width: width,
|
||||||
imageUrl: uri,
|
height: height,
|
||||||
fit: fit,
|
memCacheHeight: cacheHeight,
|
||||||
width: width,
|
memCacheWidth: cacheWidth,
|
||||||
height: height,
|
progressIndicatorBuilder: (context, url, progress) {
|
||||||
memCacheHeight: cacheHeight,
|
return Center(
|
||||||
memCacheWidth: cacheWidth,
|
child: CircularProgressIndicator(value: progress.progress),
|
||||||
progressIndicatorBuilder: (context, url, progress) {
|
);
|
||||||
return Center(
|
},
|
||||||
child: CircularProgressIndicator(value: progress.progress),
|
errorWidget: (context, url, error) {
|
||||||
);
|
return Image.asset(
|
||||||
},
|
'assets/images/media-offline.jpg',
|
||||||
errorWidget: (context, url, error) {
|
fit: BoxFit.cover,
|
||||||
return Image.asset(
|
key: Key('image-broke-$uri'),
|
||||||
'assets/images/media-offline.jpg',
|
);
|
||||||
fit: BoxFit.cover,
|
},
|
||||||
key: Key('image-broke-$uri'),
|
),
|
||||||
);
|
],
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user