首页 > 解决方案 > 可拖动项目在手动设置偏移位置时消失

问题描述

我正在尝试在图像上实现可拖动,这将使它可以在屏幕上自由拖动。我遇到的问题是,如果我不设置初始偏移坐标,它会使图像出现并且可以在屏幕上拖动,但在拖动结束后会返回到原始位置。但是如果我设置偏移值,它会使图像从屏幕上消失。这是代码:

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)坐标,并且拖动应该在屏幕周围自由地根据用户的拖动改变元素位置。

标签: flutterdartwidgetdraggable

解决方案


推荐阅读