title: TypeAheadField rebuilding twice on tap Flutter
body: <p>I have this <code>Widget</code> on <code>Build()</code> method.</p>
  
  <pre class="lang-dart prettyprint-override"><code>Widget _buildIngredientsAutocompleteTextField() {
  print("Check if rebuild");
   return TypeAheadField(
        hideSuggestionsOnKeyboardHide: true,
        hideOnEmpty: true,
        hideOnError: true,
        keepSuggestionsOnSuggestionSelected: false,
        keepSuggestionsOnLoading: false,
        textFieldConfiguration: TextFieldConfiguration(
          focusNode: searchFocus,
          controller: searchController,
          textAlign: TextAlign.center,
          style: TextStyle(fontSize: 20),
          decoration: InputDecoration(
            isDense: true,
            suffixIcon: Icon(
              Icons.search,
              size: 30,
            ),
            hintText: "hint this",
          ),
        ),
        suggestionsCallback: (pattern) async {
          print("Check 1");
          return await getSuggestions(pattern);
        },
        itemBuilder: (context, suggestion) {...
  
   onSuggestionSelected: (suggestion) {
          setState(() {
          SOMECODE....
          });
        },
      );
  </code></pre>
  
  <p>And added Listner for the keyboard(not sure if this is the reasonn:  </p>
  
  <pre class="lang-dart prettyprint-override"><code>  @override
    void initState() {
      super.initState();
      KeyboardVisibilityNotification().addNewListener(
        onHide: () {
          searchFocus.unfocus();
          searchController.text = "";
        },
      );...
  </code></pre>
  
  <p>Every time I tap this TextField, it builds this Widget twice, open keyboard, close it and reopen it.</p>
  
  <p>What could be the reason?  </p>
  
  <p>This is the debug console output: </p>
  
  <pre><code>I/flutter ( 2081): Check if rebuild
  W/IInputConnectionWrapper( 2081): beginBatchEdit on inactive InputConnection
  W/IInputConnectionWrapper( 2081): getTextBeforeCursor on inactive InputConnection
  W/IInputConnectionWrapper( 2081): getTextAfterCursor on inactive InputConnection
  W/IInputConnectionWrapper( 2081): getSelectedText on inactive InputConnection
  W/IInputConnectionWrapper( 2081): endBatchEdit on inactive InputConnection
  I/flutter ( 2081): Check if rebuild
  </code></pre>