chore: New performant fade in for images
This commit is contained in:
parent
bac2dceae4
commit
a518f8a019
1 changed files with 30 additions and 16 deletions
|
|
@ -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,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue