effectiveTransformMatrix property
Matrix4
get
effectiveTransformMatrix
override
Implementation
@override
Matrix4 get effectiveTransformMatrix {
assert(hasRenderBox());
// Make sure it is used after renderBoxModel been created.
final Matrix4 result = Matrix4.identity();
result.translateByDouble(transformOffset.dx, transformOffset.dy, 0.0, 1.0);
late Offset translation;
if (transformAlignment != Alignment.topLeft) {
// Use boxSize instead of size to avoid Flutter cannot access size beyond parent access warning
translation = transformAlignment.alongSize(boxSize()!);
// translation =
result.translateByDouble(translation.dx, translation.dy, 0.0, 1.0);
}
if (transformMatrix != null) {
result.multiply(transformMatrix!);
}
if (transformAlignment != Alignment.topLeft) {
result.translateByDouble(-translation.dx, -translation.dy, 0.0, 1.0);
}
result.translateByDouble(-transformOffset.dx, -transformOffset.dy, 0.0, 1.0);
assert(result.storage.every((double component) => component.isFinite));
return result;
}