title: Flutter listening to textField value changes from other widget
body: <p>Below is a dialog to capture users input by using a textField and a button. The button is disabled when textField is empty, however it continues to become disabled when textField is filled with values. This is because the _textController.text state is not being updated (rendered again in this widget). </p>
  
  <pre><code>void _pushAdd() async {
  await showDialog(
    context: this.context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text('Add a custom word'),
        content: _renderForm(),
        actions: &lt;Widget&gt;[
          FlatButton(
            child: Text('ADD'),
            onPressed: (_textController.text.isNotEmpty) ? () =&gt;  _addNewPair() : null,
          ),
        ],
      );
    },
  );
  // Changed _pushAdd as async to handle onClose and clear _textController upon exit
  _textController.clear();
  </code></pre>
  
  <p>Currently _textController is initiated within the class at the top (not init).</p>
  
  <pre><code>var _textController = new TextEditingController();
  </code></pre>
  
  <p>The textField with the _textController is located here:</p>
  
  <pre><code>Widget _renderForm() {
  return Container(
    height: 50.0,
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        TextField(
          autofocus: true,
          textCapitalization: TextCapitalization.words,
          controller: _textController,
          decoration: InputDecoration(
            hintText: 'RedPotato',
          ),
        ),
      ]
    )
  );
  </code></pre>
  
  <p>}</p>
  
  <p>My initial plan was to use an onChanged: + another state which stores the text. However I was doubtful if it was efficient to do that. <strong>So I ask, what is the standard way to handle TextField values real time so that other Widgets can listen to the changes?</strong></p>