Source
@override
Rectangle<num> get bounds {
if (_children.length == 0) return super.bounds;
num left = double.INFINITY;
num top = double.INFINITY;
num right = double.NEGATIVE_INFINITY;
num bottom = double.NEGATIVE_INFINITY;
for (int i = 0; i < _children.length; i++) {
var rectangle = _children[i].boundsTransformed;
if (rectangle.left < left) left = rectangle.left;
if (rectangle.top < top) top = rectangle.top;
if (rectangle.right > right) right = rectangle.right;
if (rectangle.bottom > bottom) bottom = rectangle.bottom;
}
return new Rectangle<num>(left, top, right - left, bottom - top);
}