flutter - 如何在颤动中重置矩阵手势检测器小部件中的矩阵比例?
问题描述
我在颤振中使用矩阵手势检测器小部件。我设法重置了缩放比例,但是当我下次放大时,它会从上次缩放的位置开始。我找不到解决方案来解决这个问题。有人可以告诉我从原始位置开始的方法这是我的代码
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,
),
),
);
}
}
解决方案
您需要修复您的onMatrixUpdate
方法:
onMatrixUpdate: (Matrix4 m, Matrix4 tm, Matrix4 sm, Matrix4 rm) {
setState(() {
matrix = MatrixGestureDetector.compose(matrix, tm, sm, rm);
});
},
推荐阅读
- python - 使用 Python 从 FLIR 相机流式传输 OpenCV 视频
- macros - @eval 在 @testset 名称参数中转义 $
- javascript - 返回包含另一个函数的对象列表的函数
- php - 注销后如何保存喜欢的图像并在登录后仍然可以看到它们?
- java - 我将如何使用 .split 函数将不同的数据类型分成二维数组?
- c++ - 如何在 C++ 中获得与 Fortran 相同的实数值精度(Parrel Studio XE 编译器)
- java - TLS密码套件文本从某个库到Java中的整数或十六进制值查找?
- mysql - 选择所有行(700000)很长时间 - 小时
- c# - C# 找不到主要方法
- c# - 直到下一个间隔的剩余时间不四舍五入