Dart 如何检测用户在我的屏幕上点击的位置?

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

我想知道屏幕上点击发生位置的x/y坐标。我找到了手势检测器,但它似乎没有告诉我窃听的确切位置

以下是我目前的代码:

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个轻拍处理程序,则认知开销会增加得更多。我怀疑额外的参数会有多大不同。