您可以使用a
RenderObject,然后将全局位置转换为本地位置,类似于此简单示例:
import "package:flutter/material.dart";class Test extends StatefulWidget { @override _TestState createState() => new _TestState();}class _TestState extends State<Test> { _onDragStart(BuildContext context, DragStartDetails start) { print(start.globalPosition.toString()); RenderBox getBox = context.findRenderObject(); var local = getBox.globalToLocal(start.globalPosition); print(local.dx.toString() + "|" + local.dy.toString()); } _onDragUpdate(BuildContext context, DragUpdateDetails update) { //print(update.globalPosition.toString()); RenderBox getBox = context.findRenderObject(); var local = getBox.globalToLocal(update.globalPosition); //print(local.dx.toString() + "|" + local.dy.toString()); } @override Widget build(BuildContext context) { return new Scaffold( body: new Center( child: new GestureDetector( child: new Text("Drag"), onHorizontalDragStart: (DragStartDetails start) => _onDragStart(context, start), onHorizontalDragUpdate: (DragUpdateDetails update) => _onDragUpdate(context, update), ), ), ); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)