美文网首页
【flutter】draggable基本用法介绍

【flutter】draggable基本用法介绍

作者: 朱慢慢 | 来源:发表于2021-09-10 16:54 被阅读0次
 Draggable(
      //这个参数是和DragTarget配合使用的,当用户将控件拖动到DragTarget时此数据会传递给DragTarget
      data: value,
      //子控件
      child: DragTarget(
        //当onWillAccept返回true时, candidateData参数的数据是Draggable的data数据。
        // 当onWillAccept返回false时, rejectedData参数的数据是Draggable的data数据,
        builder: (context, candidateData, rejectedData) {
          return baseItem(value);
        },
        //onWillAccept:拖到该控件上时调用,需要返回true或者false,返回true,松手后会回调onAccept,否则回调onLeave。
        onWillAccept: (moveData) {
          print('=== onWillAccept: $moveData ==> $value');
          var accept = moveData != null;
          if (accept) {
            exchangeItem(moveData, value, false);
          }
          return true;
        },
        //onAccept:onWillAccept返回true时,用户松手后调用。
        onAccept: (moveData) {
          print('=== onAccept: $moveData ==> $value');
          exchangeItem(moveData, value, true);
        },
        //onLeave:onWillAccept返回false时,用户松手后调用。
        onLeave: (moveData) {
          print('=== onLeave: $moveData ==> $value');
        },
      ),
      //拖动时跟随移动的组件
      feedback: baseItem(value, color: Colors.grey),
      //拖动的时候子组件显示其他样式
      childWhenDragging: null,
      //开始拖动时回调。
      onDragStarted: () {
        print('=== onDragStarted');
        setState(() {
          _movingValue = value; //记录开始拖拽的数据
        });
      },
      //拖动到DragTarget控件上时回调。
      onDragCompleted: () {
        print('=== onDragCompleted');
        setState(() {});
      },
      //未拖动到DragTarget控件上时回调。
      onDraggableCanceled: (Velocity velocity, Offset offset) {
        print('=== onDraggableCanceled');
        setState(() {
          _movingValue = null; //清空标记进行重绘
        });
      },
      //拖动结束时回调。
      onDragEnd: (dragDetail) {},
    );

相关文章

网友评论

      本文标题:【flutter】draggable基本用法介绍

      本文链接:https://www.haomeiwen.com/subject/ullnwltx.html