[ermine] Fix Ask query when navigating auto complete suggestions.

Previously navigating the auto complete suggestions would end
up re-issuing the query with the selected suggestion. This would
present a new auto-complete list. This broke users navigation
of the auto-complete list.

Change-Id: I5ce6b6e01bc8557f43655788b311ad2a5c0dcc60
diff --git a/shell/ermine/lib/src/modules/ask_model.dart b/shell/ermine/lib/src/modules/ask_model.dart
index d8e2fc9..00ad448 100644
--- a/shell/ermine/lib/src/modules/ask_model.dart
+++ b/shell/ermine/lib/src/modules/ask_model.dart
@@ -47,6 +47,7 @@
   double elevation = 200.0;
 
   _AskImpl _ask;
+  String _currentQuery;
 
   final _askBinding = AskBarBinding();
   final _suggestionProvider = SuggestionProviderProxy();
@@ -153,15 +154,22 @@
           return;
       }
       selection.value = newSelection.clamp(0, suggestions.value.length - 1);
-      controller
-        ..text = suggestions.value[selection.value].display.details
-        ..selection = TextSelection.fromPosition(TextPosition(
-          offset: controller.text.length,
-        ));
+      controller.value = controller.value.copyWith(
+        text: suggestions.value[selection.value].display.details,
+        selection: TextSelection(
+          baseOffset: 0,
+          extentOffset:
+              suggestions.value[selection.value].display.details.length,
+        ),
+      );
     }
   }
 
   void onQuery(String query) {
+    if (query == _currentQuery || !controller.selection.isCollapsed) {
+      return;
+    }
+    _currentQuery = query;
     _suggestions = <Suggestion>[];
 
     final queryListenerBinding = QueryListenerBinding();