Snap Matrix4旋转至90、180、270、360度,颤动

时间:2020-02-27 13:36:44

标签: flutter matrix dart rotation transform

我目前正在使用matrix_gesture_detector包来缩放,变换和旋转Transform小部件。

一切正常,但是要改善用户体验,我希望一旦用户将窗口小部件旋转到足够接近所述角度的角度,即可将窗口小部件以90、180、270或360度捕捉。

编辑:为明确起见,我希望用户能够自由旋转窗口小部件,但一旦它足够接近,便可以捕捉到在其任何一个象限内最接近的90度旋转。 因此,解决方案应检测到该“亲密关系”,然后采取相应措施。 Please visit this link to see a GIF which shows the desired effect

我该如何实现?

下面是代码段

Widget transformContainer() {
Matrix4 matrix;
GlobalKey matrixDetectorKey = GlobalKey();

return MatrixGestureDetector(
  key: matrixDetectorKey,
  onMatrixUpdate: (m, tm, sm, rm) {
    setState(() {
      matrix = MatrixGestureDetector.compose(matrix, tm, sm, rm);
    });
  },
  child: Transform(
    transform: matrix,
    child: Container(
      padding: EdgeInsets.all(24.0),
      width: 100.0,
      height: 200.0,
      color: Colors.teal,
    ),
  ),
);}

2 个答案:

答案 0 :(得分:0)

MatrixGestureDetector(
        onMatrixUpdate: (m, tm, sm, rm) {
          setState(() {
            //270 is the angle
            m.rotate(m.getTranslation(), 270);
            matrix4 = m;
          });
        },
        child: Transform(
          transform: matrix4,
          child: Container(
            padding: EdgeInsets.all(24.0),
            width: 100,
            height: 200,
            color: Colors.teal,
          ),
        ),
      ),

答案 1 :(得分:0)

您将在库中具有旋转功能。此代码适用于捕捉到0度的情况。基本上,我正在做的是如果旋转和x轴的差小于0.2弧度,我将捕捉到0度,同时将旋转保持在单独的变量中。当用户超出此范围时,我再次添加此值并保持正常旋转。

select * from Table2 where T1_ID =?