State createState() => MyDragState();
}
class MyDragState extends State {
@override
Widget build(BuildContext context) {
return xxx;
}
}
###第三步
使用GestureDetector作为父容器监听手势。
@override
Widget build(BuildContext context) {
return GestureDetector(
onHorizontalDragUpdate: dragEvent,
onVerticalDragUpdate: dragEvent,
child: xxx
);
}
void dragEvent(DragUpdateDetails details) {
final RenderObject box = context.findRenderObject();
// 获得自定义Widget的大小,用来计算Widget的中心锚点
dx = details.globalPosition.dx - mykey.currentContext.size.width / 2;
dy = details.globalPosition.dy - mykey.currentContext.size.height / 2;
setState(() {});
}
GestureDetector类是Flutter中处理手势的Widget,它包括了我们常用到的手势事件回调,例如:
onTap、onTapDown、onTapUp、onTapCancel、onDoubleTap、onLongPress等一系列手势。