我正在尝试使列缩放/移动。但是,如何设置最大变焦和最小变焦呢?这样就不会放大到无限远。
[立即使用此方法:
Matrix4 matrix = Matrix4.identity();
MatrixGestureDetector(
shouldRotate: false
onMatrixUpdate: (Matrix4 m, Matrix4 tm, Matrix4 sm, Matrix4 rm) {
setState(() {
matrix = m;
});
},
child: Transform(
transform: matrix,
child: Column(
),
),
我遇到了同样的问题,花了一段时间,但遇到了解决方案。
在Flutter的Transform.scale
source中进行了一些挖掘后,发现这条线给了我们提示:
Transform.scale
它使用从transform = Matrix4.diagonal3Values(scale, scale, 1.0)
中收到的Matrix4
中的对角线值。因此,它从第一个向量4中获取onMatrixUpdate
,从第二个向量中获取x
,并从第三个向量中获取y
。 (据我所知,第四项是固定的)。因此,这些是您需要限制的值。在此示例中,我制作了一个较小的z
方法,该方法在相关时将比例尺限制在相关的最小/最大值(可以将其传递给_minMax
以忽略限制的任何一侧)。
我用这个来限制规模:
null