首页 > 解决方案 > 如何在颤动中重置矩阵手势检测器小部件中的矩阵比例?

问题描述

我在颤振中使用矩阵手势检测器小部件。我设法重置了缩放比例,但是当我下次放大时,它会从上次缩放的位置开始。我找不到解决方案来解决这个问题。有人可以告诉我从原始位置开始的方法这是我的代码

import 'package:flutter/material.dart';
import 'package:matrix_gesture_detector/matrix_gesture_detector.dart';

class ZoomableWidget extends StatefulWidget {
  final Widget child;

  const ZoomableWidget({Key key, this.child}) : super(key: key);
  @override
  _ZoomableWidgetState createState() => _ZoomableWidgetState();
}

class _ZoomableWidgetState extends State<ZoomableWidget> {
  Matrix4 matrix = Matrix4.identity();
  Matrix4 resetMatrix =  Matrix4.identity();

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onDoubleTap: (){
        setState(() {
          matrix = resetMatrix;
        });
      },
      child: MatrixGestureDetector(
        shouldRotate: false,
        onMatrixUpdate: (Matrix4 m, Matrix4 tm, Matrix4 sm, Matrix4 rm) {
          setState(() {
            matrix = m;
          });
        },
        child: Transform(
          transform: matrix,
          child: widget.child,
        ),
      ),
    );
  }
}

标签: flutterdart

解决方案


您需要修复您的onMatrixUpdate方法:

onMatrixUpdate: (Matrix4 m, Matrix4 tm, Matrix4 sm, Matrix4 rm) {
  setState(() {
    matrix = MatrixGestureDetector.compose(matrix, tm, sm, rm);
  });
},

推荐阅读