chore: New performant fade in for images

This commit is contained in:
Krille 2024-03-21 09:55:49 +01:00
parent bac2dceae4
commit a518f8a019
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652

View file

@ -156,21 +156,35 @@ class _MxcImageState extends State<MxcImage> {
@override
Widget build(BuildContext context) {
final data = _imageData;
final hasData = data != null && data.isNotEmpty;
return data == null || data.isEmpty
? placeholder(context)
: Image.memory(
data,
width: widget.width,
height: widget.height,
fit: widget.fit,
filterQuality: FilterQuality.medium,
errorBuilder: (context, __, ___) {
_isCached = false;
_imageData = null;
WidgetsBinding.instance.addPostFrameCallback(_tryLoad);
return placeholder(context);
},
);
return Stack(
children: [
if (!hasData) placeholder(context),
AnimatedOpacity(
opacity: hasData ? 1 : 0,
duration: FluffyThemes.animationDuration,
curve: FluffyThemes.animationCurve,
child: hasData
? Image.memory(
data,
width: widget.width,
height: widget.height,
fit: widget.fit,
filterQuality: FilterQuality.medium,
errorBuilder: (context, __, ___) {
_isCached = false;
_imageData = null;
WidgetsBinding.instance.addPostFrameCallback(_tryLoad);
return placeholder(context);
},
)
: SizedBox(
width: widget.width,
height: widget.height,
),
),
],
);
}
}