Commit d6e949fb authored by Adam Barth's avatar Adam Barth

Add logging to help diagnose image loading failures

For debugging #801
parent d8fdccc5
......@@ -9,11 +9,7 @@ typedef void ImageListener(sky.Image image);
class ImageResource {
ImageResource(this._futureImage) {
_futureImage.then((sky.Image image) {
_image = image;
_resolved = true;
_notifyListeners();
});
_futureImage.then(_handleImageLoaded, onError: _handleImageError);
}
bool _resolved = false;
......@@ -33,10 +29,25 @@ class ImageResource {
_listeners.remove(listener);
}
void _handleImageLoaded(sky.Image image) {
_image = image;
_resolved = true;
_notifyListeners();
}
void _handleImageError(e, stackTrace) {
print('Failed to load image: $e\nStack trace: $stackTrace');
}
void _notifyListeners() {
assert(_resolved);
List<ImageListener> localListeners = new List<ImageListener>.from(_listeners);
for (ImageListener listener in localListeners)
listener(_image);
for (ImageListener listener in localListeners) {
try {
listener(_image);
} catch(e) {
print('Image listener had exception: $e');
}
}
}
}
......@@ -633,7 +633,9 @@ class ImageListener extends StatefulComponent {
this.colorFilter,
this.fit: ImageFit.scaleDown,
this.repeat: ImageRepeat.noRepeat
}) : super(key: key);
}) : super(key: key) {
assert(image != null);
}
ImageResource image;
double width;
......@@ -645,8 +647,7 @@ class ImageListener extends StatefulComponent {
sky.Image _resolvedImage;
void _handleImageChanged(sky.Image resolvedImage) {
if (!mounted)
return;
assert(mounted);
setState(() {
_resolvedImage = resolvedImage;
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment