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

时间:2019-05-02 07:10:24

标签: flutter

使用GestureDetector,您可以通过其RenderBox获取被轻击的窗口小部件的大小和位置:

GestureDetector(
  onTap: () {
    RenderBox renderBox = context.findRenderObject();
  }
);

由于TextSpan不是Widget,因此从context.findRenderObject()内部调用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();
        },
      ),
    ],
  ),
);

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

2 个答案:

答案 0 :(得分:0)

您可以使用onTapUp,它会带回您点按包含全局触摸位置的信息。

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

答案 1 :(得分:0)

您可以将 WidgetSpan 与 Widget child 一起使用。然后您将在 Widget 构建中获得正确的 RenderBox。