layout method
void
layout(
- Context context,
- BoxConstraints constraints, {
- bool parentUsesSize = false,
override
First widget pass to calculate the children layout and bounding box
Implementation
@override
void layout(
Context context,
BoxConstraints constraints, {
bool parentUsesSize = false,
}) {
if (!adjustLayout) {
return super.layout(context, constraints, parentUsesSize: parentUsesSize);
}
if (child != null) {
child!.layout(
context,
unconstrained ? const BoxConstraints() : constraints,
parentUsesSize: parentUsesSize,
);
assert(child!.box != null);
final mat = transform;
final values = mat.applyToVector3Array(<double>[
child!.box!.left,
child!.box!.top,
0,
child!.box!.right,
child!.box!.top,
0,
child!.box!.right,
child!.box!.bottom,
0,
child!.box!.left,
child!.box!.bottom,
0,
]);
final dx = -math.min(
math.min(math.min(values[0], values[3]), values[6]),
values[9],
);
final dy = -math.min(
math.min(math.min(values[1], values[4]), values[7]),
values[10],
);
box = PdfRect.fromLBRT(
0,
0,
math.max(
math.max(math.max(values[0], values[3]), values[6]),
values[9],
) +
dx,
math.max(
math.max(math.max(values[1], values[4]), values[7]),
values[10],
) +
dy,
);
transform.leftTranslateByDouble(dx, dy, 0, 1);
} else {
box = PdfRect.fromPoints(PdfPoint.zero, constraints.smallest);
}
}