使用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时获取其坐标?
答案 0 :(得分:0)
您可以使用onTapUp,它会带回您点按包含全局触摸位置的信息。
然后,您可以使用该点击信息并将其传递给renderObjects globalToLocal转换函数,您将在小部件内获得一个本地坐标。
答案 1 :(得分:0)
您可以将 WidgetSpan 与 Widget child 一起使用。然后您将在 Widget 构建中获得正确的 RenderBox。