zoukankan      html  css  js  c++  java
  • Flutter-gestureDetector的滑动事件小试

    class _Drag extends StatefulWidget {
      @override
      _DragState createState() => new _DragState();
    }
    
    class _DragState extends State<_Drag> with SingleTickerProviderStateMixin {
      double _top = 0.0; //距顶部的偏移
      double _left = 0.0;//距左边的偏移
    
      @override
      Widget build(BuildContext context) {
        return Stack(
          children: <Widget>[
            Positioned(
              top: _top,
              left: _left,
              child: GestureDetector(
                child: CircleAvatar(child: Text("A")),
                //手指按下时会触发此回调
                onPanDown: (DragDownDetails e) {
                  //打印手指按下的位置(相对于屏幕)
                  print("用户手指按下:${e.globalPosition}");
                },
                //手指滑动时会触发此回调
                onPanUpdate: (DragUpdateDetails e) {
                  //用户手指滑动时,更新偏移,重新构建
                  setState(() {
                    _left += e.delta.dx;
                    _top += e.delta.dy;
                  });
                },
                onPanEnd: (DragEndDetails e){
                  //打印滑动结束时在x、y轴上的速度
                  print(e.velocity);
                },
              ),
            )
          ],
        );
      }
    }

    可以看到,滑动回调和点击回调都类似,看回调名字就能知道是什么用的。

    其中用的stack是为了在拖动时实时改变其在屏幕中的位置,利用onPanUpdate回调可以在拖动时改变圆的位置参数(_top/_left)。

    然后就可以拖着这个圆到处移动了。

  • 相关阅读:
    array_merge
    漏斗模型
    3 破解密码,xshell连接
    2-安装linux7
    1-Linux运维人员要求
    17-[模块]-time&datetime
    16-[模块]-导入方式
    Nginx服务器
    15-作业:员工信息表查询
    14-本章总结
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13510935.html
Copyright © 2011-2022 走看看