Dart 如何检测用户在我的屏幕上点击的位置?
我想知道屏幕上点击发生位置的x/y坐标。我找到了手势检测器,但它似乎没有告诉我窃听的确切位置 以下是我目前的代码:Dart 如何检测用户在我的屏幕上点击的位置?,dart,flutter,Dart,Flutter,我想知道屏幕上点击发生位置的x/y坐标。我找到了手势检测器,但它似乎没有告诉我窃听的确切位置 以下是我目前的代码: import 'package:flutter/material.dart'; void main() { runApp(new MyWidget()); } class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return new
import 'package:flutter/material.dart';
void main() {
runApp(new MyWidget());
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => print('tapped!')
);
}
}
哪一个注册了一个水龙头。。。但是我如何找到点击的起点呢?观察onTapDown和onTapUp,它们提供了更多细节供您使用
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => print('tapped!'),
onTapDown: (TapDownDetails details) => _onTapDown(details),
onTapUp: (TapUpDetails details) => _onTapUp(details),
);
}
_onTapDown(TapDownDetails details) {
var x = details.globalPosition.dx;
var y = details.globalPosition.dy;
// or user the local position method to get the offset
print(details.localPosition);
print("tap down " + x.toString() + ", " + y.toString());
}
_onTapUp(TapUpDetails details) {
var x = details.globalPosition.dx;
var y = details.globalPosition.dy;
// or user the local position method to get the offset
print(details.localPosition);
print("tap up " + x.toString() + ", " + y.toString());
}
}
好问题。您应该要求他们提供详细信息,而不是作废。:)onTap适用于您不关心职位的常见情况。如果onTap处理程序接受一个参数,那么每个人的onTap处理程序中都会有一个被忽略的参数,这会增加复杂性和认知开销。onTapDown和onTapUp适用于边缘情况,在这些情况下,您需要做一些比检测触摸更奇特的事情。别忘了,您可以使用context.findEnderObject().globalTopolocal(details.globalPosition)将位置转换为本地坐标;但是,如果在手势检测器上安装8个轻拍处理程序,则认知开销会增加得更多。我怀疑额外的参数会有多大不同。