在颤动中跟踪 x 和 y 位置的可拖动元素

Ran*_*ngh 7 flutter flutter-layout

我正在捕获图像并想对该图像进行一些计算,为此我需要获取图像上某些点的位置。为此,我使用了可拖动元素,我的想法是拖动一个元素到图像上,获取可拖动元素的 x 和 y 位置进行计算。

我使用了以下代码

body: Container(
        child: Stack(
          children: <Widget>[
            Image.file(File(widget.imagePath)),
            Draggable(
              axis: Axis.vertical,

              child: Text('_________', style: TextStyle(color: Colors.blue, fontSize: 90) ),
              feedback:Text('____',style: TextStyle(color: Colors.blue, fontSize: 90)) ,
              childWhenDragging: Text(''),

            ),

            SizedBox(height: 50.0,),

          ],
        ),
      )
Run Code Online (Sandbox Code Playgroud)

问题是 1. 当一个元素被拖动时,该元素位置应该随着触摸而移动,当前拖动时,元素会移动几个像素。2. 元素位置没有转移到最终拖动位置,当我移除触摸元素时回到原始位置。

请帮我解决一下这个。

TWL*_*TWL 10

要使用这样的Draggable

  1. 您需要能够设置元素的位置,例如Positioned及其left, top
  2. 然后你需要得到拖动的结束坐标,使用dragDetailsfromonDragEnd: (dragDetails) { }

这是一个简单的示例,可以让您开始:

Positioned(
  left: _x,
  top: _y,
  child: Draggable(
    child: FlutterLogo(size: _logoSize),
    feedback: FlutterLogo(size: _logoSize),
    childWhenDragging: Container(),
    onDragEnd: (dragDetails) {
      setState(() {
        _x = dragDetails.offset.dx;
        // if applicable, don't forget offsets like app/status bar
        _y = dragDetails.offset.dy - appBarHeight - statusBarHeight;
      });
    },
  ),
)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

也是一个很好的介绍 Draggable medium/A Deep Dive Into Draggable and DragTarget in Flutter

(如果你不想使用 Draggable,你也可以使用 aGestureDetector来完成同样的事情,但多一点工作)

  • setState()每个拖动的像素,如何避免子项重新渲染? (2认同)