getLargestAvailableSpace method
This functions search for the maximum rect available space We use it for example to find the most available space to write a text in our anchored helper
Implementation
Rect getLargestAvailableSpace(ElementModel elementModel) {
var parentObject = context.findRenderObject()!;
var element = elementModel.element!;
var translation =
element.renderObject!.getTransformTo(parentObject).getTranslation();
var objectX = translation.x;
var objectEndX = objectX + element.size!.width;
var objectY = translation.y;
var objectEndY = objectY + element.size!.height;
var layerRect = parentObject.paintBounds;
Rect availableHSpace;
Rect availableWSpace;
if (objectY > layerRect.height - objectEndY) {
availableHSpace = Rect.fromLTWH(0, 0, layerRect.width, objectY);
} else {
availableHSpace = Rect.fromLTWH(
0, objectEndY, layerRect.width, layerRect.height - objectEndY);
}
if (objectX > layerRect.width - objectEndX) {
availableWSpace = Rect.fromLTWH(0, 0, objectX, layerRect.height);
} else {
availableWSpace = Rect.fromLTWH(
objectEndX, 0, layerRect.width - objectEndX, layerRect.height);
}
// check area to use the largest
var availableHSpaceArea =
availableHSpace.size.width * availableHSpace.size.height;
var availableWSpaceArea =
availableWSpace.size.width * availableWSpace.size.height;
if (availableWSpaceArea > availableHSpaceArea &&
availableWSpace.width > minWritableSpace) {
return availableWSpace;
}
return availableHSpace;
}