Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:如何移动、旋转和缩放容器?_Flutter_Rotation_Zooming_Gesture_Pan - Fatal编程技术网

Flutter 颤振:如何移动、旋转和缩放容器?

Flutter 颤振:如何移动、旋转和缩放容器?,flutter,rotation,zooming,gesture,pan,Flutter,Rotation,Zooming,Gesture,Pan,我想做一个可以拖动、缩放和旋转的容器。我能够实现缩放。下面是我的代码: //variable declaration double _scale = 1.0; double _previousScale; var yOffset = 400.0; var xOffset = 50.0; var rotation = 0.0; var lastRotation = 0.0; //构建方法 @override Widget build(BuildContext cont

我想做一个可以拖动、缩放和旋转的容器。我能够实现缩放。下面是我的代码:

//variable declaration
  double _scale = 1.0;
  double _previousScale;
  var yOffset = 400.0;
  var xOffset = 50.0;
  var rotation = 0.0;
  var lastRotation = 0.0;
//构建方法

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Center(
          child: GestureDetector(
            onScaleStart: (scaleDetails) {
              _previousScale = _scale;
              print(' scaleStarts = ${scaleDetails.focalPoint}');
            },
            onScaleUpdate: (scaleUpdates){
              //ScaleUpdateDetails
              rotation += lastRotation - scaleUpdates.rotation;
              lastRotation = scaleUpdates.rotation;
              print("lastRotation = $lastRotation");
              print(' scaleUpdates = ${scaleUpdates.scale} rotation = ${scaleUpdates.rotation}');
              setState(() => _scale = _previousScale * scaleUpdates.scale);
            },
            onScaleEnd: (scaleEndDetails) {
              _previousScale = null;
              print(' scaleEnds = ${scaleEndDetails.velocity}');
            },
            child:
            Transform(
              transform: Matrix4.diagonal3( Vector3(_scale, _scale, _scale))..rotateZ(rotation * math.pi/180.0),
              alignment: FractionalOffset.center,
              child: Container(
                height: 200.0,
                width: 200.0,
                color: Colors.red,
              ),
            )
            ,
          ),
        ),
      ),
    );
  }
目前,没有旋转,我无法移动容器。

使用软件包,这里是基本示例:

MatrixGestureDetector(
  onMatrixUpdate: (m, tm, sm, rm) {
    setState(() {
      matrix = n;
    });
  },
  child: Transform(
    transform: matrix,
    child: ....
  ),
),
有关更多示例代码,请参阅包含6个演示的示例文件夹,这里有基本示例:

MatrixGestureDetector(
  onMatrixUpdate: (m, tm, sm, rm) {
    setState(() {
      matrix = n;
    });
  },
  child: Transform(
    transform: matrix,
    child: ....
  ),
),

有关更多示例代码,请参阅包含6个演示的示例文件夹。您也可以使用照片查看器而不是矩阵手势检测器。此答案中的更多信息:

您也可以使用照片查看器而不是矩阵手势检测器。此答案中的更多信息:

您可以使用RotatedBox小部件进行旋转,同时使用InteractiveViewer widget进行放大和缩小

InteractiveViewer小部件中用于移动容器的panEnabled属性

您可以使用RotatedBox小部件进行旋转,也可以使用InteractiveViewer widget进行放大和缩小

InteractiveViewer小部件中用于移动容器的panEnabled属性


使用示例文件夹中有一些示例代码,您有什么问题?很抱歉,响应太晚,它确实解决了问题,但我需要一个结合Transform.Scale的解决方案,Transform.rotate和Transform.translate in Flatter.我不知道你的意思是什么使用两个或更多的MatrixGestureDetector-每个转换的小部件都应该有自己的MatrixGestureDetector使用示例文件夹中的一些示例代码,你有什么问题吗?抱歉,响应太晚,它确实解决了这个问题,但我想要一个解决方案,将Transform.Scale、Transform.rotate和Transform.translate结合在一起。我不知道这是什么意思使用两个或更多的MatrixGestureDetector-每个转换的小部件都应该有自己的MatrixGestureDetector如何进行文本缩放、旋转,使用矩阵_手势进行翻译_detector@AnkurPrakash你有我的答案中的代码-只是将你的文本小部件设置为一个有什么问题的孩子?请看最简单的表单,我的问题是,即使是文本容器也占据了整个屏幕。我想限制有文本的文本区域。目前,调整大小需要一个完整的屏幕。另一个问题是保存和装载集装箱。我正在保存容器矩阵并检索回来,但当我触摸它时,它将进入全屏标识。我请求您在示例中添加一个示例,用户可以分别调整图像和文本的大小,并保存当前布局。这将是一个很大的帮助。我是颤振开发新手。如何使用矩阵_手势进行文本缩放、旋转和翻译_detector@AnkurPrakash你有我的答案中的代码-只是将你的文本小部件设置为一个有什么问题的孩子?请看最简单的表单,我的问题是,即使是文本容器也占据了整个屏幕。我想限制有文本的文本区域。目前,调整大小需要一个完整的屏幕。另一个问题是保存和装载集装箱。我正在保存容器矩阵并检索回来,但当我触摸它时,它将进入全屏标识。我请求您在示例中添加一个示例,用户可以分别调整图像和文本的大小,并保存当前布局。这将是一个很大的帮助。我对颤振开发还不熟悉。