title: Flutter, How to get the size of a widget?
body: <p>I came across this example to get the Size/Position of a widget:
  <a href="https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407" rel="noreferrer">https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407</a></p>
  
  <p>what is wrong with my code? </p>
  
  <p>I get the error:</p>
  
  <pre><code>The following NoSuchMethodError was thrown while handling a gesture:
  I/flutter ( 8566): The method 'findRenderObject' was called on null.
  I/flutter ( 8566): Receiver: null
  I/flutter ( 8566): Tried calling: findRenderObject()
  </code></pre>
  
  
  
  <pre><code>void main() {
        runApp(new MyApp());
      }
  
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return MaterialApp(home: MyWidgetSizeTMP());
        }
      }
  
      class MyWidgetSizeTMP extends StatefulWidget{
        @override
        MyWidgetSizeTMPState createState() {
          return new MyWidgetSizeTMPState();
        }
      }
  
      class MyWidgetSizeTMPState extends State&lt;MyWidgetSizeTMP&gt; {
  
        //creating Key for red panel
        GlobalKey _keyRed = GlobalKey();
  
        _getSizes() {
          final RenderBox renderBoxRed = _keyRed.currentContext.findRenderObject();
          final sizeRed = renderBoxRed.size;
          print("SIZE of Red: $sizeRed");
        }
  
        _getPositions() {
          final RenderBox renderBoxRed = _keyRed.currentContext.findRenderObject();
          final positionRed = renderBoxRed.localToGlobal(Offset.zero);
          print("POSITION of Red: $positionRed ");
        }
  
        _afterLayout(_) {
          _getSizes();
          _getPositions();
        }
  
        @override
        void initState() {
          // TODO: implement initState
          super.initState();
          WidgetsBinding.instance.addPostFrameCallback(_afterLayout);
        }
  
        @override
        Widget build(BuildContext context) {
          return Scaffold(
            appBar: AppBar(
            ),
            body: Column(
              children: &lt;Widget&gt;[
                Flexible(
                  flex: 2,
                  child: Container(
                    color: Colors.red,
                  ),
                ),
                Flexible(
                  flex: 1,
                  child: Container(
                    color: Colors.purple,
                  ),
                ),
                Flexible(
                  flex: 3,
                  child: Container(
                    color: Colors.green,
                  ),
                ),
                Spacer(),
                Padding(
                  padding: const EdgeInsets.only(bottom: 8.0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceAround,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: &lt;Widget&gt;[
                      MaterialButton(
                        elevation: 5.0,
                        padding: EdgeInsets.all(15.0),
                        color: Colors.grey,
                        child: Text("Get Sizes"),
                        onPressed: _getSizes,
                      ),
                      MaterialButton(
                        elevation: 5.0,
                        color: Colors.grey,
                        padding: EdgeInsets.all(15.0),
                        child: Text("Get Positions"),
                        onPressed: _getPositions,
                      )
                    ],
                  ),
                )
              ],
            ),
          );
        }
      }
  </code></pre>