gpt4 book ai didi

Flutter:从 GestureDetector 获取本地位置

转载 作者:IT老高 更新时间:2023-10-28 12:35:15 26 4
gpt4 key购买 nike

我正在使用 GestureDetector 来获取此事件:

onHorizontalDragStart: _onDragStart,
onHorizontalDragUpdate: _onDragUpdate,

但是如何将全局位置转换为本地位置?被移动的 child 是一个容器。

最佳答案

您可以使用 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),
),
),
);
}
}

关于Flutter:从 GestureDetector 获取本地位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com