flutter - 可拖动项目在手动设置偏移位置时消失
问题描述
我正在尝试在图像上实现可拖动,这将使它可以在屏幕上自由拖动。我遇到的问题是,如果我不设置初始偏移坐标,它会使图像出现并且可以在屏幕上拖动,但在拖动结束后会返回到原始位置。但是如果我设置偏移值,它会使图像从屏幕上消失。这是代码:
class PlayScreen extends StatefulWidget {
@override
_PlayScreenState createState() => _PlayScreenState();
}
class _PlayScreenState extends State<PlayScreen> {
@override
Widget build(BuildContext context) {
double _x = 163.0; //draggable coordinates
double _y = 197.0;
return Scaffold(
body: Stack(
children: <Widget>[
Container(
constraints: BoxConstraints.expand(),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/shared/field.png'),
fit: BoxFit.cover,
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SizedBox(height: 20.0.h),
Stack(
children: <Widget>[
Positioned(
left: _x,
top: _y,
child: Draggable(
child: Image.asset( //Draggable Image
'assets/images/playScreenImages/worker_with_paint.png',
height: 30.0.h,
width: 30.0.w,
),
feedback: Image.asset(
'assets/images/playScreenImages/worker_with_paint.png',
height: 30.0.h,
width: 30.0.w,
),
childWhenDragging: Container(),
onDragEnd: (dragDetails) {
setState(() {
_x = dragDetails.offset.dx;
_y = dragDetails.offset.dy;
print(_x);
print(_y);
});
},
),
),
Container(
padding: EdgeInsets.only(left: 5.0.w),
child: SvgPicture.asset(
'assets/images/playScreenImages/score.svg'),
),
],
),
SizedBox(height: 50.0.h),
Container(
alignment: Alignment.center,
child: new Image(
image: AssetImage(unfilledImages[imageCounter]),
height: 40.0.h,
width: 60.0.w,
),
),
],
),
);
}
}
我想要实现的是将初始元素(图像)位置设置为等(x,y)坐标,并且拖动应该在屏幕周围自由地根据用户的拖动改变元素位置。
解决方案
推荐阅读
- java - Recycleview 项目增值
- mysql - 在MySql中如何设计两个具有相同列但具有不同关系的表
- lua - 返回更多函数的函数创建无限循环
- python - 读取 .csv 的内容并使用 python 将其写入另一个 .csv 文件
- mysql - MySQL 在两个 ISO 格式的日期之间进行选择
- c++ - 带有 libc++ 异常的 Clang
- python - Python中普通变量访问有什么用?
- mongodb - 计算 MongoDB 中每个用户的页面查看日志
- xamarin - 如何使用 SkiaSharp 测量尾随空格?
- c# - 如何在 ASP.NET Core 中结合 FromBody 和 FromForm BindingSource?