chore: Follow up image rendering

This commit is contained in:
krille-chan 2024-03-24 10:56:44 +01:00
commit 45e1122648
No known key found for this signature in database
5 changed files with 48 additions and 49 deletions

View file

@ -130,11 +130,8 @@ class _MxcImageState extends State<MxcImage> {
}
}
bool _hasDataFromBeginning = false;
void _tryLoad(_) async {
if (_imageData != null) {
_hasDataFromBeginning = true;
return;
}
try {
@ -163,35 +160,30 @@ class _MxcImageState extends State<MxcImage> {
final data = _imageData;
final hasData = data != null && data.isNotEmpty;
return Stack(
children: [
if (!_hasDataFromBeginning) 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: widget.isThumbnail
? FilterQuality.low
: FilterQuality.medium,
errorBuilder: (context, __, ___) {
_isCached = false;
_imageData = null;
WidgetsBinding.instance.addPostFrameCallback(_tryLoad);
return placeholder(context);
},
)
: SizedBox(
width: widget.width,
height: widget.height,
),
),
],
return AnimatedCrossFade(
crossFadeState:
hasData ? CrossFadeState.showSecond : CrossFadeState.showFirst,
duration: FluffyThemes.animationDuration,
firstChild: placeholder(context),
secondChild: hasData
? Image.memory(
data,
width: widget.width,
height: widget.height,
fit: widget.fit,
filterQuality:
widget.isThumbnail ? FilterQuality.low : FilterQuality.medium,
errorBuilder: (context, __, ___) {
_isCached = false;
_imageData = null;
WidgetsBinding.instance.addPostFrameCallback(_tryLoad);
return placeholder(context);
},
)
: SizedBox(
width: widget.width,
height: widget.height,
),
);
}
}