Images in Stocks drawer layout at crazy sizes
Now that we get sky.Image callbacks synchronously, we were actually figuring in the width and height of images the second time the drawer opened in the Stocks app. That exposed a bug in our RenderImage layout code whereby it would ignore the _width and _height properties when the image was non-null.
This commit is contained in:
parent
2701b469cf
commit
ae9f170243
@ -1385,6 +1385,9 @@ class RenderImage extends RenderBox {
|
||||
}
|
||||
|
||||
Size _sizeForConstraints(BoxConstraints constraints) {
|
||||
if (constraints.isTight)
|
||||
return constraints.constrain(Size.zero);
|
||||
|
||||
// If there's no image, we can't size ourselves automatically
|
||||
if (_image == null) {
|
||||
double width = _width == null ? 0.0 : _width;
|
||||
@ -1392,7 +1395,6 @@ class RenderImage extends RenderBox {
|
||||
return constraints.constrain(new Size(width, height));
|
||||
}
|
||||
|
||||
if (!constraints.isTight) {
|
||||
// If neither height nor width are specified, use inherent image
|
||||
// dimensions. If only one dimension is specified, adjust the
|
||||
// other dimension to maintain the aspect ratio. In both cases,
|
||||
@ -1411,17 +1413,20 @@ class RenderImage extends RenderBox {
|
||||
}
|
||||
return constraints.constrain(new Size(width, height));
|
||||
}
|
||||
|
||||
// Determine width from height
|
||||
double width = _height * _image.width / _image.height;
|
||||
return constraints.constrain(new Size(width, height));
|
||||
}
|
||||
|
||||
if (_height == null) {
|
||||
// Determine height from width
|
||||
double height = _width * _image.height / _image.width;
|
||||
return constraints.constrain(new Size(width, height));
|
||||
}
|
||||
}
|
||||
return constraints.constrain(new Size(_image.width.toDouble(), _image.height.toDouble()));
|
||||
|
||||
assert(_width != null && _height != null);
|
||||
return constraints.constrain(new Size(_width, _height));
|
||||
}
|
||||
|
||||
double getMinIntrinsicWidth(BoxConstraints constraints) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user