rotatedTextSize function
This method returns the rect for given size and angle
Implementation
Rect rotatedTextSize(Size size, int angle) {
final Rect rect = Rect.fromLTWH(0, 0, size.width, size.height);
final vector.Matrix2 rotatorMatrix =
vector.Matrix2.rotation(degreeToRadian(angle));
final Rect movedToCenterAsOrigin = rect.shift(-rect.center);
Offset topLeft = movedToCenterAsOrigin.topLeft;
Offset topRight = movedToCenterAsOrigin.topRight;
Offset bottomLeft = movedToCenterAsOrigin.bottomLeft;
Offset bottomRight = movedToCenterAsOrigin.bottomRight;
topLeft = transform(rotatorMatrix, topLeft);
topRight = transform(rotatorMatrix, topRight);
bottomLeft = transform(rotatorMatrix, bottomLeft);
bottomRight = transform(rotatorMatrix, bottomRight);
final List<Offset> rotOffsets = <Offset>[
topLeft,
topRight,
bottomLeft,
bottomRight
];
final double minX =
rotOffsets.map((Offset offset) => offset.dx).reduce(math.min);
final double maxX =
rotOffsets.map((Offset offset) => offset.dx).reduce(math.max);
final double minY =
rotOffsets.map((Offset offset) => offset.dy).reduce(math.min);
final double maxY =
rotOffsets.map((Offset offset) => offset.dy).reduce(math.max);
final Rect rotateRect = Rect.fromPoints(
Offset(minX, minY),
Offset(maxX, maxY),
);
return rotateRect;
}