'how to obtain RenderObject of lowest level widget?(RenderObject for SelectableText)

I want to obtain RenderObject of SelectableText because I want obtain RenderBox of the text, which, to my understanding, is obtainable via RenderObject.

So, I try to use GlobalKey to access the RenderObject by using this GlobalKey().currentContext?.findRenderObject()

But what I got is not what I want...

This is the demo program:

class Demo extends StatefulWidget {
  const Demo({Key? key}) : super(key: key);

  @override
  State<Demo> createState() => _DemoState();
}

class _DemoState extends State<Demo> {
  final _selectableTextKey = GlobalKey();

  @override
  Widget build(BuildContext context) {
    return SelectableText(
      'This is a test',
      key: _selectableTextKey,
      onTap: () {
        print(
            'render object == ${_selectableTextKey.currentContext?.findRenderObject()}');
      },
    );
  }
}

This is the output in the console:

flutter: render object == RenderSemanticsAnnotations#52070 relayoutBoundary=up4

As illustrated in the screenshot of the DetailTree enter image description here

I want the RenderObject of green arrow's, but I got red arrow's instead.

Using GlobalKey to obtain RenderObject then to access the RenderBox is all I know so far, so I don't have other idea to try...



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source