【问题标题】:Position Resize and Rotate Flutter Widget dynamically with gesture使用手势动态调整 Flutter Widget 的位置大小和旋转
【发布时间】:2021-08-22 20:26:49
【问题描述】:

我正在用 Flutter 开发一个图像编辑器。为此,我需要添加一个将图像和文本动态添加到屏幕的功能。它们中的每一个都应该能够独立地缩放、定位和旋转。应该有一个像 word 或 Photoshop 中的锚点来指示活动图像并缩放和旋转它们(图像中的示例)。图像应通过拖放定位。

小部件应该能够在 x、y 和 xy 中缩放。

我尝试过的事情

1.matrix_gesture_detector 我认为这个包没有仅在 x 或仅在 y 中缩放的选项。它在 x 和 y 中统一缩放小部件。用图像中类似的东西制作活动图像也很困难。如果我们将活动图像包装在图像中的自定义小部件中,小部件也会随图像缩放。例如,如果缩放时边框厚度为 1 px,则厚度也会缩放,使其连线。

2。使用变换小部件。 当使用变换小部件时,上面提到的小部件指示问题,图像周围的活动图像也随小部件缩放。同样在缩放时的变换中,我必须根据所选缩放动态调整对齐或原点。例如,如果我只想在顶部方向缩放,我必须将锚点设置为底部中心。但是这里的锚点是相对于小部件的初始大小设置的。所以当改变锚点缩放到不同的方向时,widget会跳转到相对于widget原始大小的对应对齐位置。

3.使用 Positioned.fromRect 我已经从 StackOverflow 尝试过这个解决方案 Resizing a rotated container in flutter,但这里的问题是解决方案仅适用于一个小部件。所以我把它包裹在一个堆栈中。但是当旋转时,它会旋转整个堆栈。堆栈采用画布的高度和宽度。所以变换小部件的锚点的对齐是相对于那个而不是相对于图像。

注意:我正在使用 Getx 进行状态管理。如果你能在getx中提供解决方案,那是首选。

【问题讨论】:

  • @JacobPhillips 是的。我已经试过了。如问题中所述,一种或另一种方式存在问题。所以我需要一个详细的解释。
  • @JacobPhillips。旋转整个堆栈设置相对于堆栈的旋转锚点。正确的?但是我们只需要设置相对于 Widget 项的旋转锚点。不是吗?
  • 我想我已经试过了。但是如何显示活动层然后/
  • @SanketVekariya 我尝试过这样的事情(问题第三点的链接)。但这仅适用于一个小部件。正确的?此外,它不显示旋转。我需要多个小部件进行旋转调整大小和定位。
  • @SanketVekariya 很好。但是示例中的缩放功能并没有完全按照我的预期运行。在示例中,当您通过单击底部绿点进行缩放时,它相对于图像的中心进行缩放(即在两侧、顶部和底部的缩放)。我只需要缩放我们拖动的一侧。 (类似于此链接stackoverflow.com/questions/64410463/…)。

标签: flutter dart flutter-layout


【解决方案1】:

您可以扭曲 Stack->Positioned->Transform.rotate->Your Widget。 也可以参考photobooth的源码。

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多