chore: New performant fade in for images

This commit is contained in:
Krille 2024-03-21 09:55:49 +01:00
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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final data = _imageData; final data = _imageData;
final hasData = data != null && data.isNotEmpty;
return data == null || data.isEmpty return Stack(
? placeholder(context) children: [
: Image.memory( if (!hasData) placeholder(context),
data, AnimatedOpacity(
width: widget.width, opacity: hasData ? 1 : 0,
height: widget.height, duration: FluffyThemes.animationDuration,
fit: widget.fit, curve: FluffyThemes.animationCurve,
filterQuality: FilterQuality.medium, child: hasData
errorBuilder: (context, __, ___) { ? Image.memory(
_isCached = false; data,
_imageData = null; width: widget.width,
WidgetsBinding.instance.addPostFrameCallback(_tryLoad); height: widget.height,
return placeholder(context); 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,
),
),
],
);
} }
} }