Flutter:如何使用matrix_gesture_detector设置最大/最小刻度

问题描述 投票:1回答:1

我正在尝试使列缩放/移动。但是,如何设置最大变焦和最小变焦呢?这样就不会放大到无限远。

[立即使用此方法:

 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 dart zoom scale gesture
1个回答
0
投票

我遇到了同样的问题,花了一段时间,但遇到了解决方案。

在Flutter的Transform.scale source中进行了一些挖掘后,发现这条线给了我们提示:

Transform.scale

它使用从transform = Matrix4.diagonal3Values(scale, scale, 1.0) 中收到的Matrix4中的对角线值。因此,它从第一个向量4中获取onMatrixUpdate,从第二个向量中获取x,并从第三个向量中获取y。 (据我所知,第四项是固定的)。因此,这些是您需要限制的值。在此示例中,我制作了一个较小的z方法,该方法在相关时将比例尺限制在相关的最小/最大值(可以将其传递给_minMax以忽略限制的任何一侧)。

我用这个来限制规模:

null
© www.soinside.com 2019 - 2024. All rights reserved.