我正在捕获图像,并希望对该图像进行一些计算,为此,我需要获取图像上某些斑点的位置。为此,我使用的是可拖动元素,我的想法是拖动一个元素以在图像上定位,获取可拖动元素的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,),
],
),
)
问题是 1.当一个元素被拖动时,该元素的位置应触摸移动,当前拖动时,该元素将移动几个像素。 2.元素位置没有移到最终拖动位置,当我卸下触摸元素时,请回到原始位置。
请帮助我。
答案 0 :(得分:7)
要像这样使用Draggable,
Positioned
及其left
,top
。dragDetails
中的onDragEnd: (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;
});
},
),
)
也是可拖动medium/A Deep Dive Into Draggable and DragTarget in Flutter
的一个很好的介绍 (如果您不想使用Draggable,也可以使用GestureDetector
完成相同的操作,但需要做更多的工作)
答案 1 :(得分:1)
TWL的解决方案有效,但请注意,Positioned
必须是Stack
小部件的后代。