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)。

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

  • 相关阅读:
    Volatile vs. Interlocked vs. lock
    TransactionScope IsolationLevel 事务隔离级别
    C# LinqAggregate
    .net线程入门1进程
    删除centos更新后多余的内核
    网页中怎么导入css的3方式
    面试常用基础理论(三)
    面试常用基础理论(四)
    Jmeter基本概念
    面试常用基础理论(二)
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13510935.html
Copyright © 2011-2022 走看看