title: Removing listerers before dispose flutter
body: <p>If i initialise a watcher in the initState() e.g.</p>
  
  <pre><code>textController.addListener(textTypedListener);
  </code></pre>
  
  <p>Do i need to manually remove the listener before I dispose of the text controller? or does the dispose automatically handle this.</p>
  
  <p>eg. Options 1 </p>
  
  <pre><code> @override
    void dispose() {
      textController.removeListener(textTypedListener);
      textController.dispose();
      super.dispose();
    }
  </code></pre>
  
  <p>Option 2 </p>
  
  <pre><code> @override
    void dispose() {
      textController.dispose();
      super.dispose();
    }
  </code></pre>
  
  <p>Which is best?</p>
  
  <p>Thanks a lot. </p>