Migrate deprecated vector_math calls

This commit is contained in:
Kevin Moore 2025-05-21 19:14:04 -07:00
parent a79827a310
commit e187d015c8
24 changed files with 72 additions and 67 deletions

View File

@ -1742,7 +1742,7 @@ class _RenderLargeTitle extends RenderShiftedBox {
super.applyPaintTransform(child, transform);
transform.scale(_scale, _scale);
transform.scaledByDouble(_scale, _scale, _scale, 1);
}
@override
@ -1776,8 +1776,8 @@ class _RenderLargeTitle extends RenderShiftedBox {
final Matrix4 transform =
Matrix4.identity()
..scale(1.0 / _scale, 1.0 / _scale, 1.0)
..translate(-childOffset.dx, -childOffset.dy);
..scaleByDouble(1.0 / _scale, 1.0 / _scale, 1.0, 1)
..translateByDouble(-childOffset.dx, -childOffset.dy, 0, 1);
return result.addWithRawTransform(
transform: transform,
@ -2357,7 +2357,7 @@ class _BackChevron extends StatelessWidget {
switch (textDirection) {
case TextDirection.rtl:
iconWidget = Transform(
transform: Matrix4.identity()..scale(-1.0, 1.0, 1.0),
transform: Matrix4.identity()..scaleByDouble(-1.0, 1.0, 1.0, 1),
alignment: Alignment.center,
transformHitTests: false,
child: iconWidget,

View File

@ -141,9 +141,9 @@ class CupertinoTextSelectionControls extends TextSelectionControls {
return Transform(
transform:
Matrix4.identity()
..translate(desiredSize.width / 2, desiredSize.height / 2)
..translateByDouble(desiredSize.width / 2, desiredSize.height / 2, 0, 1)
..rotateZ(math.pi)
..translate(-desiredSize.width / 2, -desiredSize.height / 2),
..translateByDouble(-desiredSize.width / 2, -desiredSize.height / 2, 0, 1),
child: handle,
);
// iOS should draw an invisible box so the handle can still receive gestures

View File

@ -103,7 +103,7 @@ class _OffsetTransformPart extends _TransformPart {
@override
Matrix4 multiply(Matrix4 rhs) {
return rhs.clone()..leftTranslate(offset.dx, offset.dy);
return rhs.clone()..leftTranslateByDouble(offset.dx, offset.dy, 0, 1);
}
}

View File

@ -333,7 +333,8 @@ class _FlexibleSpaceBarState extends State<FlexibleSpaceBar> {
begin: widget.expandedTitleScale,
end: 1.0,
).transform(t);
final Matrix4 scaleTransform = Matrix4.identity()..scale(scaleValue, scaleValue, 1.0);
final Matrix4 scaleTransform =
Matrix4.identity()..scaleByDouble(scaleValue, scaleValue, 1.0, 1);
final Alignment titleAlignment = _getTitleAlignment(effectiveCenterTitle);
children.add(
Padding(

View File

@ -1604,8 +1604,8 @@ class _RenderDecoration extends RenderBox
final double dy = lerpDouble(0.0, floatingY - labelOffset.dy, t)!;
_labelTransform =
Matrix4.identity()
..translate(dx, labelOffset.dy + dy)
..scale(scale);
..translateByDouble(dx, labelOffset.dy + dy,0,1)
..scaleByDouble(scale, scale, scale, 1);
layer = context.pushTransform(
needsCompositing,
offset,
@ -1636,7 +1636,7 @@ class _RenderDecoration extends RenderBox
final Offset labelOffset = _boxParentData(label!).offset;
transform
..multiply(_labelTransform!)
..translate(-labelOffset.dx, -labelOffset.dy);
..translateByDouble(-labelOffset.dx, -labelOffset.dy, 0, 1);
}
super.applyPaintTransform(child, transform);
}

View File

@ -1261,10 +1261,10 @@ void _updateScaledTransform(Matrix4 transform, double scale, Size size) {
if (scale == 1.0) {
return;
}
transform.scale(scale, scale);
transform.scaleByDouble(scale, scale, scale, 1);
final double dx = ((size.width * scale) - size.width) / 2;
final double dy = ((size.height * scale) - size.height) / 2;
transform.translate(-dx, -dy);
transform.translateByDouble(-dx, -dy, 0, 1);
}
mixin _ZoomTransitionBase<S extends StatefulWidget> on State<S> {

View File

@ -370,7 +370,7 @@ class _TextSelectionToolbarTrailingEdgeAlignRenderBox extends RenderProxyBox {
@override
void applyPaintTransform(RenderObject child, Matrix4 transform) {
final ToolbarItemsParentData childParentData = child.parentData! as ToolbarItemsParentData;
transform.translate(childParentData.offset.dx, childParentData.offset.dy);
transform.translateByDouble(childParentData.offset.dx, childParentData.offset.dy, 0, 1);
super.applyPaintTransform(child, transform);
}
}

View File

@ -12,10 +12,7 @@ import 'dart:math' as math;
import 'dart:ui' as ui show Gradient, lerpDouble;
import 'package:flutter/foundation.dart';
import 'package:vector_math/vector_math_64.dart';
import 'alignment.dart';
import 'basic_types.dart';
import 'package:flutter/rendering.dart';
class _ColorsAndStops {
_ColorsAndStops(this.colors, this.stops);
@ -121,7 +118,7 @@ class GradientRotation extends GradientTransform {
final double originY = -sinRadians * center.dx + oneMinusCosRadians * center.dy;
return Matrix4.identity()
..translate(originX, originY)
..translateByDouble(originX, originY, 0, 1)
..rotateZ(radians);
}

View File

@ -17,8 +17,7 @@ import 'dart:ui' as ui show ViewConstraints, lerpDouble;
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:vector_math/vector_math_64.dart';
import 'package:vector_math/vector_math_64.dart' show Matrix4, Vector3;
import 'debug.dart';
import 'object.dart';
@ -3037,7 +3036,7 @@ abstract class RenderBox extends RenderObject {
}());
final BoxParentData childParentData = child.parentData! as BoxParentData;
final Offset offset = childParentData.offset;
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
/// Convert the given point from the global coordinate system in logical pixels

View File

@ -18,7 +18,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/scheduler.dart';
import 'package:vector_math/vector_math_64.dart';
import 'package:vector_math/vector_math_64.dart' show Vector4;
import 'debug.dart';
@ -1491,7 +1491,7 @@ class OffsetLayer extends ContainerLayer {
@override
void applyTransform(Layer? child, Matrix4 transform) {
assert(child != null);
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
@override
@ -1519,7 +1519,7 @@ class OffsetLayer extends ContainerLayer {
ui.Scene _createSceneForImage(Rect bounds, {double pixelRatio = 1.0}) {
final ui.SceneBuilder builder = ui.SceneBuilder();
final Matrix4 transform = Matrix4.diagonal3Values(pixelRatio, pixelRatio, 1);
transform.translate(-(bounds.left + offset.dx), -(bounds.top + offset.dy));
transform.translateByDouble(-(bounds.left + offset.dx), -(bounds.top + offset.dy), 0, 1);
builder.pushTransform(transform.storage);
return buildScene(builder);
}
@ -2578,7 +2578,7 @@ class LeaderLayer extends ContainerLayer {
@override
void applyTransform(Layer? child, Matrix4 transform) {
if (offset != Offset.zero) {
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
}
@ -2826,7 +2826,7 @@ class FollowerLayer extends ContainerLayer {
// of the leader layer, to account for the leader's additional paint offset
// and layer offset (LeaderLayer.offset).
leader.applyTransform(null, forwardTransform);
forwardTransform.translate(linkedOffset!.dx, linkedOffset!.dy);
forwardTransform.translateByDouble(linkedOffset!.dx, linkedOffset!.dy, 0, 1);
final Matrix4 inverseTransform = _collectTransformForLayerChain(inverseLayers);

View File

@ -1020,7 +1020,7 @@ class RenderListWheelViewport extends RenderBox
final ListWheelParentData childParentData = child.parentData! as ListWheelParentData;
// Save the final transform that accounts both for the offset and cylindrical transform.
final Matrix4 transform = _centerOriginTransform(cylindricalTransform)
..translate(paintOriginOffset.dx, paintOriginOffset.dy);
..translateByDouble(paintOriginOffset.dx, paintOriginOffset.dy, 0, 1);
childParentData.transform = transform;
}
@ -1028,9 +1028,9 @@ class RenderListWheelViewport extends RenderBox
/// magnified area.
Matrix4 _magnifyTransform() {
final Matrix4 magnify = Matrix4.identity();
magnify.translate(size.width * (-_offAxisFraction + 0.5), size.height / 2);
magnify.scale(_magnification, _magnification, _magnification);
magnify.translate(-size.width * (-_offAxisFraction + 0.5), -size.height / 2);
magnify.translateByDouble(size.width * (-_offAxisFraction + 0.5), size.height / 2, 0, 1);
magnify.scaledByDouble(_magnification, _magnification, _magnification, 1.0);
magnify.translateByDouble(-size.width * (-_offAxisFraction + 0.5), -size.height / 2, 0, 1);
return magnify;
}
@ -1039,14 +1039,18 @@ class RenderListWheelViewport extends RenderBox
Matrix4 _centerOriginTransform(Matrix4 originalMatrix) {
final Matrix4 result = Matrix4.identity();
final Offset centerOriginTranslation = Alignment.center.alongSize(size);
result.translate(
result.translateByDouble(
centerOriginTranslation.dx * (-_offAxisFraction * 2 + 1),
centerOriginTranslation.dy,
0,
1,
);
result.multiply(originalMatrix);
result.translate(
result.translateByDouble(
-centerOriginTranslation.dx * (-_offAxisFraction * 2 + 1),
-centerOriginTranslation.dy,
0,
1,
);
return result;
}

View File

@ -780,7 +780,7 @@ class PaintingContext extends ClipContext {
final Matrix4 effectiveTransform =
Matrix4.translationValues(offset.dx, offset.dy, 0.0)
..multiply(transform)
..translate(-offset.dx, -offset.dy);
..translateByDouble(-offset.dx, -offset.dy, 0, 1);
if (needsCompositing) {
final TransformLayer layer = oldLayer ?? TransformLayer();
layer.transform = effectiveTransform;

View File

@ -248,7 +248,7 @@ mixin RenderInlineChildrenContainerDefaults
if (offset == null) {
transform.setZero();
} else {
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
}

View File

@ -2606,14 +2606,14 @@ class RenderTransform extends RenderProxyBox {
/// Concatenates a translation by (x, y, z) into the transform.
void translate(double x, [double y = 0.0, double z = 0.0]) {
_transform!.translate(x, y, z);
_transform!.translateByDouble(x, y, z, 1);
markNeedsPaint();
markNeedsSemanticsUpdate();
}
/// Concatenates a scale into the transform.
void scale(double x, [double? y, double? z]) {
_transform!.scale(x, y, z);
_transform!.scaledByDouble(x, y ?? x, z ?? x, 1);
markNeedsPaint();
markNeedsSemanticsUpdate();
}
@ -2625,19 +2625,19 @@ class RenderTransform extends RenderProxyBox {
}
final Matrix4 result = Matrix4.identity();
if (_origin != null) {
result.translate(_origin!.dx, _origin!.dy);
result.translateByDouble(_origin!.dx, _origin!.dy, 0, 1);
}
Offset? translation;
if (resolvedAlignment != null) {
translation = resolvedAlignment.alongSize(size);
result.translate(translation.dx, translation.dy);
result.translateByDouble(translation.dx, translation.dy, 0, 1);
}
result.multiply(_transform!);
if (resolvedAlignment != null) {
result.translate(-translation!.dx, -translation.dy);
result.translateByDouble(-translation!.dx, -translation.dy, 0, 1);
}
if (_origin != null) {
result.translate(-_origin!.dx, -_origin!.dy);
result.translateByDouble(-_origin!.dx, -_origin!.dy, 0, 1);
}
return result;
}
@ -2692,7 +2692,7 @@ class RenderTransform extends RenderProxyBox {
final Matrix4 effectiveTransform =
Matrix4.translationValues(offset.dx, offset.dy, 0.0)
..multiply(transform)
..translate(-offset.dx, -offset.dy);
..translateByDouble(-offset.dx, -offset.dy, 0, 1);
final ui.ImageFilter filter = ui.ImageFilter.matrix(
effectiveTransform.storage,
filterQuality: filterQuality!,
@ -2911,8 +2911,8 @@ class RenderFittedBox extends RenderProxyBox {
assert(scaleX.isFinite && scaleY.isFinite);
_transform =
Matrix4.translationValues(destinationRect.left, destinationRect.top, 0.0)
..scale(scaleX, scaleY, 1.0)
..translate(-sourceRect.left, -sourceRect.top);
..scaleByDouble(scaleX, scaleY, 1.0, 1)
..translateByDouble(-sourceRect.left, -sourceRect.top, 0, 1);
assert(_transform!.storage.every((double value) => value.isFinite));
}
}
@ -3072,7 +3072,7 @@ class RenderFractionalTranslation extends RenderProxyBox {
@override
void applyPaintTransform(RenderBox child, Matrix4 transform) {
transform.translate(translation.dx * size.width, translation.dy * size.height);
transform.translateByDouble(translation.dx * size.width, translation.dy * size.height, 0, 1);
}
@override

View File

@ -8,7 +8,7 @@ library;
import 'dart:math' as math;
import 'package:flutter/foundation.dart';
import 'package:vector_math/vector_math_64.dart';
import 'package:vector_math/vector_math_64.dart' show Matrix4;
import 'box.dart';
import 'layer.dart';
@ -92,9 +92,9 @@ class RenderRotatedBox extends RenderBox with RenderObjectWithChildMixin<RenderB
size = _isVertical ? Size(child!.size.height, child!.size.width) : child!.size;
_paintTransform =
Matrix4.identity()
..translate(size.width / 2.0, size.height / 2.0)
..translateByDouble(size.width / 2.0, size.height / 2.0, 0, 1)
..rotateZ(_kQuarterTurnsInRadians * (quarterTurns % 4))
..translate(-child!.size.width / 2.0, -child!.size.height / 2.0);
..translateByDouble(-child!.size.width / 2.0, -child!.size.height / 2.0, 0, 1);
} else {
size = constraints.smallest;
}

View File

@ -1135,7 +1135,7 @@ class SliverPhysicalParentData extends ParentData {
/// [SliverPhysicalParentData].
void applyPaintTransform(Matrix4 transform) {
// Hit test logic relies on this always providing an invertible matrix.
transform.translate(paintOffset.dx, paintOffset.dy);
transform.translateByDouble(paintOffset.dx, paintOffset.dy, 0, 1);
}
@override
@ -1913,12 +1913,12 @@ mixin RenderSliverHelpers implements RenderSliver {
if (!rightWayUp) {
delta = geometry!.paintExtent - child.size.width - delta;
}
transform.translate(delta, crossAxisDelta);
transform.translateByDouble(delta, crossAxisDelta, 0, 1);
case Axis.vertical:
if (!rightWayUp) {
delta = geometry!.paintExtent - child.size.height - delta;
}
transform.translate(crossAxisDelta, delta);
transform.translateByDouble(crossAxisDelta, delta, 0, 1);
}
}
}

View File

@ -2087,7 +2087,7 @@ class RenderShrinkWrappingViewport extends RenderViewportBase<SliverLogicalConta
void applyPaintTransform(RenderObject child, Matrix4 transform) {
// Hit test logic relies on this always providing an invertible matrix.
final Offset offset = paintOffsetOf(child as RenderSliver);
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
@override

View File

@ -542,7 +542,8 @@ class _RawAutocompleteState<T extends Object> extends State<RawAutocomplete<T>>
OptionsViewOpenDirection.down => overlayRectInField.bottom - optionsViewBoundingBox.height,
};
final Matrix4 transform = layoutInfo.childPaintTransform.clone()..translate(0.0, originY);
final Matrix4 transform =
layoutInfo.childPaintTransform.clone()..translateByDouble(0.0, originY, 0, 1);
final Widget child = Builder(
builder: (BuildContext context) => widget.optionsViewBuilder(context, _select, _options),
);

View File

@ -334,7 +334,7 @@ class Icon extends StatelessWidget {
switch (textDirection) {
case TextDirection.rtl:
iconWidget = Transform(
transform: Matrix4.identity()..scale(-1.0, 1.0, 1.0),
transform: Matrix4.identity()..scaleByDouble(-1.0, 1.0, 1.0, 1),
alignment: Alignment.center,
transformHitTests: false,
child: iconWidget,

View File

@ -12,7 +12,8 @@ import 'dart:math' as math;
import 'package:flutter/foundation.dart' show clampDouble;
import 'package:flutter/gestures.dart';
import 'package:flutter/physics.dart';
import 'package:vector_math/vector_math_64.dart' show Matrix4, Quad, Vector3;
import 'package:flutter/rendering.dart';
import 'package:vector_math/vector_math_64.dart' show Quad, Vector3;
import 'basic.dart';
import 'framework.dart';
@ -565,7 +566,7 @@ class _InteractiveViewerState extends State<InteractiveViewer> with TickerProvid
}
final Matrix4 nextMatrix =
matrix.clone()..translate(alignedTranslation.dx, alignedTranslation.dy);
matrix.clone()..translateByDouble(alignedTranslation.dx, alignedTranslation.dy, 0, 1);
// Transform the viewport to determine where its four corners will be after
// the child has been transformed.
@ -658,7 +659,7 @@ class _InteractiveViewerState extends State<InteractiveViewer> with TickerProvid
);
final double clampedTotalScale = clampDouble(totalScale, widget.minScale, widget.maxScale);
final double clampedScale = clampedTotalScale / currentScale;
return matrix.clone()..scale(clampedScale);
return matrix.clone()..scaleByDouble(clampedScale, clampedScale, clampedScale, 1);
}
// Return a new matrix representing the given matrix after applying the given
@ -669,9 +670,9 @@ class _InteractiveViewerState extends State<InteractiveViewer> with TickerProvid
}
final Offset focalPointScene = _transformer.toScene(focalPoint);
return matrix.clone()
..translate(focalPointScene.dx, focalPointScene.dy)
..translateByDouble(focalPointScene.dx, focalPointScene.dy, 0, 1)
..rotateZ(-rotation)
..translate(-focalPointScene.dx, -focalPointScene.dy);
..translateByDouble(-focalPointScene.dx, -focalPointScene.dy, 0, 1);
}
// Returns true iff the given _GestureType is enabled.
@ -1236,9 +1237,9 @@ Quad _transformViewport(Matrix4 matrix, Rect viewport) {
Quad _getAxisAlignedBoundingBoxWithRotation(Rect rect, double rotation) {
final Matrix4 rotationMatrix =
Matrix4.identity()
..translate(rect.size.width / 2, rect.size.height / 2)
..translateByDouble(rect.size.width / 2, rect.size.height / 2, 0, 1)
..rotateZ(rotation)
..translate(-rect.size.width / 2, -rect.size.height / 2);
..translateByDouble(-rect.size.width / 2, -rect.size.height / 2, 0, 1);
final Quad boundariesRotated = Quad.points(
rotationMatrix.transform3(Vector3(rect.left, rect.top, 0.0)),
rotationMatrix.transform3(Vector3(rect.right, rect.top, 0.0)),

View File

@ -631,11 +631,13 @@ class _RenderMagnification extends RenderProxyBox {
final Offset thisCenter = Alignment.center.alongSize(size) + offset;
final Matrix4 matrix =
Matrix4.identity()
..translate(
..translateByDouble(
magnificationScale * ((focalPointOffset.dx * -1) - thisCenter.dx) + thisCenter.dx,
magnificationScale * ((focalPointOffset.dy * -1) - thisCenter.dy) + thisCenter.dy,
0,
1,
)
..scale(magnificationScale);
..scaleByDouble(magnificationScale, magnificationScale, magnificationScale, 1);
final ImageFilter filter = ImageFilter.matrix(
matrix.storage,
filterQuality: FilterQuality.high,

View File

@ -2547,7 +2547,7 @@ final class _RenderDeferredLayoutBox extends RenderProxyBox
void applyPaintTransform(RenderBox child, Matrix4 transform) {
final BoxParentData childParentData = child.parentData! as BoxParentData;
final Offset offset = childParentData.offset;
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
}
@ -2663,7 +2663,7 @@ class _RenderLayoutBuilder extends RenderProxyBox
void applyPaintTransform(RenderBox child, Matrix4 transform) {
final BoxParentData childParentData = child.parentData! as BoxParentData;
final Offset offset = childParentData.offset;
transform.translate(offset.dx, offset.dy);
transform.translateByDouble(offset.dx, offset.dy, 0, 1);
}
@protected

View File

@ -576,7 +576,7 @@ class _RenderSingleChildViewport extends RenderBox
@override
void applyPaintTransform(RenderBox child, Matrix4 transform) {
final Offset paintOffset = _paintOffset;
transform.translate(paintOffset.dx, paintOffset.dy);
transform.translateByDouble(paintOffset.dx, paintOffset.dy,0,1);
}
@override

View File

@ -420,7 +420,7 @@ class _RenderScaledInlineWidget extends RenderBox with RenderObjectWithChildMixi
@override
void applyPaintTransform(RenderBox child, Matrix4 transform) {
transform.scale(scale, scale);
transform.scaleByDouble(scale, scale, scale, 1);
}
@override