import 'package:flutter/rendering.dart'; import 'package:test/test.dart'; import 'rendering_tester.dart'; class RenderTestBox extends RenderBox { RenderTestBox(this._intrinsicDimensions); final BoxConstraints _intrinsicDimensions; double getMinIntrinsicWidth(BoxConstraints constraints) { return constraints.constrainWidth(_intrinsicDimensions.minWidth); } double getMaxIntrinsicWidth(BoxConstraints constraints) { return constraints.constrainWidth(_intrinsicDimensions.maxWidth); } double getMinIntrinsicHeight(BoxConstraints constraints) { return constraints.constrainHeight(_intrinsicDimensions.minHeight); } double getMaxIntrinsicHeight(BoxConstraints constraints) { return constraints.constrainHeight(_intrinsicDimensions.maxHeight); } bool get sizedByParent => true; void performResize() { size = constraints.constrain(new Size(_intrinsicDimensions.minWidth + (_intrinsicDimensions.maxWidth-_intrinsicDimensions.minWidth) / 2.0, _intrinsicDimensions.minHeight + (_intrinsicDimensions.maxHeight-_intrinsicDimensions.minHeight) / 2.0)); } } void main() { test('Shrink-wrapping width', () { RenderBox child = new RenderTestBox(new BoxConstraints(minWidth: 10.0, maxWidth: 100.0, minHeight: 20.0, maxHeight: 200.0)); RenderBox parent = new RenderIntrinsicWidth(child: child); layout(parent, constraints: new BoxConstraints( minWidth: 5.0, minHeight: 8.0, maxWidth: 500.0, maxHeight: 800.0)); expect(parent.size.width, equals(100.0)); expect(parent.size.height, equals(110.0)); }); test('Shrink-wrapping height', () { RenderBox child = new RenderTestBox(new BoxConstraints(minWidth: 10.0, maxWidth: 100.0, minHeight: 20.0, maxHeight: 200.0)); RenderBox parent = new RenderIntrinsicHeight(child: child); layout(parent, constraints: new BoxConstraints( minWidth: 5.0, minHeight: 8.0, maxWidth: 500.0, maxHeight: 800.0)); expect(parent.size.width, equals(55.0)); expect(parent.size.height, equals(200.0)); }); }