Flutter实现可拖拽操作Draggable

Flutter中Draggable控件的拖拽功能解析

在这里插入图片描述


Draggable 是 Flutter 中一个用来实现拖拽功能的控件。它允许用户将一个控件拖动到屏幕的不同位置,并且可以与 DragTarget 控件一起工作来完成拖拽交互。 Draggable 控件不仅可以在应用内拖动控件,还可以处理拖拽反馈、拖拽过程中控件的状态变更等操作。

1. Draggable 控件的构造函数

Draggable<T>({
   
   
  Key? key,
  required T data,  // 传递的拖拽数据
  required Widget child,  // 拖拽控件本身的显示
  Widget? feedback,  // 拖拽过程中展示的控件(通常是透明的)
  Widget? childWhenDragging,  // 拖拽时原控件的替代显示
  Axis? axis,  // 指定拖拽方向(水平或垂直)
  bool? ignorePointer,  // 是否忽略手势
  bool? dragAnchorStrategy,  // 自定义拖拽时锚点位置
  bool? onDragStarted,  // 拖拽开始时的回调
  bool? onDragEnd,  // 拖拽结束时的回调
  bool? onDraggableCanceled,  // 拖拽取消时的回调
})
主要参数:
  • data:拖拽的核心数据,当用户拖拽控件时会携带此数据(可以是任意类型)。
  • child:正常显示的控件。它是拖拽对象的原始显示(例如,可以是一个文本或图像)。
  • feedback:拖拽时展示的控件,通常是半透明的,这个控件在拖拽期间会悬浮在用户的手指上方。
  • childWhenDragging:当控件被拖拽时,原控件的替代显示(通常是空白或一个灰色的占位符)。
  • axis:控制拖拽的方向,值可以是 Axis.horizontal(水平)或 Axis.vertical(垂直),也可以为 Axis.none(没有方向限制)。
  • ignorePointer:是否忽略手势。如果为 true,该控件在拖拽时将无法响应任何手势。
  • onDragStarted:拖拽开始时的回调,通常用来更新状态或做一些准备工作。
  • onDragEnd:拖拽结束时的回调,通常用来处理拖拽结束后的逻辑。
  • onDraggableCanceled:当拖拽被取消时的回调,通常是当控件离开了任何 DragTarget 区域。

2. Draggable 的工作原理

Draggable 控件主要通过 data 属性将需要拖拽的数据传递给其他控件,特别是 DragTarget,在用户拖拽控件时,Draggable 控件会自动执行以下操作:

  1. 拖拽开始:当用户开始拖拽时,Draggable 控件会展示指定的 feedback,并且显示出原始控件的占位符(childWhenDragging)。
  2. 拖拽过程:拖拽过程中,用户可以将控件在屏幕上拖动,通常会通过 onDragStartedonDragEnd 回调来触发相应的逻辑。
  3. 拖拽结束或取消:当拖拽对象被放置到 DragTarget 中,或者当用户取消拖拽时,Draggable 会触发 onDragEndonDraggableCanceled 回调。

3. 常见用法

示例 1:基本的拖拽控件
import 'package:flutter/material.dart';

void main() {
   
   
  runApp(MyApp());
}

class MyApp extends 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值