title: TextFormField: setState() or markNeedsBuild() called during build
body: <p>I'm trying to set first time button as disabled and when user enters amount it gets enabled, button disable works fine but when i enter amount in TextFormField it gives below error.</p>
  
  <pre><code>   I/flutter (29519): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY 
     ╞═══════════════════════════════════════════════════════════
     I/flutter (29519): The following assertion was thrown building 
     TextFormField(dirty, state: _TextFormFieldState#b89da):
     I/flutter (29519): setState() or markNeedsBuild() called during build.
     I/flutter (29519): This HomePage widget cannot be marked as needing to 
     build because the framework is already in the
     I/flutter (29519): process of building widgets. A widget can be marked as 
     needing to be built during the build phase
     I/flutter (29519): only if one of its ancestors is currently building. 
     This exception is allowed because the framework
     I/flutter (29519): builds parent widgets before children, which means a 
     dirty descendant will always be built.
     I/flutter (29519): Otherwise, the framework might not visit this widget 
     during this build phase.
     I/flutter (29519): The widget on which setState() or markNeedsBuild() was 
     called was:
  </code></pre>
  
  <p>my code:</p>
  
  <pre><code>var _onPressed;
  if (isButtonDisabled) {
    _onPressed = () {
      print("Hello");
    };
  }
  </code></pre>
  
  <p>TextFormField code:</p>
  
  <pre><code>child: TextFormField(
    decoration: InputDecoration(
      contentPadding: EdgeInsets.only(
        left: 12.0,
        right: 12.0,
        top: 12.0,
        bottom: 12.0
      ),
      labelText: 'Enter amount',
      hintText: 'Enter amount',
      hintStyle: TextStyle(
        color: Colors.red,
        fontSize: 14.0
      ),
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(0.0)
      ),
    ),
    keyboardType: TextInputType.number,
    autovalidate: true,
    validator: (String txt) {
      if (txt.length == 2) {
        setState(() {
          isButtonDisabled = true;
        });
      } else {
        setState(() {
          isButtonDisabled = false;
        });
      }
    }
  ),       
  </code></pre>
  
  <p>Button Code:</p>
  
  <pre><code>FlatButton(
    child: Text("Confirm"),
    onPressed: _onPressed,
  )                                  
  </code></pre>