如何获取点击的 TextSpan 的坐标?

Xan*_*der 5 flutter

使用GestureDetector,您可以通过以下方式获取被点击的小部件的大小和位置RenderBox

GestureDetector(
  onTap: () {
    RenderBox renderBox = context.findRenderObject();
  }
);
Run Code Online (Sandbox Code Playgroud)

因为 aTextSpan不是 a Widget,所以context.findRenderObject()从 a 内调用TextSpan只能为您提供封闭小部件的框RichText

RichText(
  text: TextSpan(
    children: [
      TextSpan(
        text: 'Tap me',
        recognizer: TapGestureRecognizer()..onTap = () {
          //Gets box around RichText, not around this TextSpan
          RenderBox renderBox = context.findRenderObject();
        },
      ),
    ],
  ),
);
Run Code Online (Sandbox Code Playgroud)

是否有另一个 API 可以在点击时获取单个 TextSpan 的坐标?

Fil*_*cks 1

您可以使用 onTapUp,它将为您提供包含全局触摸位置的后按信息。

然后,您可以使用该点击信息并将其传递给 renderObjects globalToLocal 转换函数,您将在小部件内获得本地坐标。