Skip to content

Commit 048a00a

Browse files
authored
Merge pull request Sub6Resources#523 from tneotia/bugfix/gif-completer-issue
Fix completer.complete() firing multiple times when rendering GIFs
2 parents 69aa227 + 661bfc8 commit 048a00a

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

lib/src/replaced_element.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,9 @@ class ImageContentElement extends ReplacedElement {
133133
Completer<Size> completer = Completer();
134134
Image image = Image.network(src, frameBuilder: (ctx, child, frame, _) {
135135
if (frame == null) {
136-
completer.completeError("error");
136+
if (!completer.isCompleted) {
137+
completer.completeError("error");
138+
}
137139
return child;
138140
} else {
139141
return child;
@@ -142,11 +144,14 @@ class ImageContentElement extends ReplacedElement {
142144
image.image.resolve(ImageConfiguration()).addListener(
143145
ImageStreamListener((ImageInfo image, bool synchronousCall) {
144146
var myImage = image.image;
145-
Size size =
146-
Size(myImage.width.toDouble(), myImage.height.toDouble());
147-
completer.complete(size);
147+
Size size = Size(myImage.width.toDouble(), myImage.height.toDouble());
148+
if (!completer.isCompleted) {
149+
completer.complete(size);
150+
}
148151
}, onError: (object, stacktrace) {
149-
completer.completeError(object);
152+
if (!completer.isCompleted) {
153+
completer.completeError(object);
154+
}
150155
}),
151156
);
152157
imageWidget = FutureBuilder<Size>(

0 commit comments

Comments
 (0)