@@ -136,6 +136,8 @@ class ReactiveTypeAhead<T, V> extends ReactiveFormField<T, V> {
136
136
137
137
state._setFocusNode (focusNode);
138
138
final controller = textEditingController ?? state._textController;
139
+ final fieldSuggestionsController =
140
+ suggestionsController ?? state._suggestionsController;
139
141
if (field.value != null ) {
140
142
controller.text = stringify (field.value as V );
141
143
}
@@ -147,6 +149,7 @@ class ReactiveTypeAhead<T, V> extends ReactiveFormField<T, V> {
147
149
controller.text = stringify (value);
148
150
field.didChange (value);
149
151
onSuggestionSelected? .call (value);
152
+ fieldSuggestionsController.close (); // close the suggestions box
150
153
},
151
154
builder: (context, controller, focusNode) {
152
155
// Keep the selected value in the text field
@@ -186,7 +189,7 @@ class ReactiveTypeAhead<T, V> extends ReactiveFormField<T, V> {
186
189
},
187
190
decorationBuilder: decorationBuilder,
188
191
debounceDuration: debounceDuration,
189
- suggestionsController: suggestionsController ,
192
+ suggestionsController: fieldSuggestionsController ,
190
193
loadingBuilder: loadingBuilder,
191
194
emptyBuilder: emptyBuilder,
192
195
errorBuilder: errorBuilder,
@@ -217,6 +220,8 @@ class ReactiveTypeAhead<T, V> extends ReactiveFormField<T, V> {
217
220
218
221
class _ReactiveTypeaheadState <T , V > extends ReactiveFormFieldState <T , V > {
219
222
late TextEditingController _textController;
223
+ late SuggestionsController <V > _suggestionsController;
224
+
220
225
FocusNode ? _focusNode;
221
226
late FocusController _focusController;
222
227
@@ -226,6 +231,7 @@ class _ReactiveTypeaheadState<T, V> extends ReactiveFormFieldState<T, V> {
226
231
@override
227
232
void initState () {
228
233
super .initState ();
234
+ _suggestionsController = SuggestionsController <V >();
229
235
230
236
final initialValue = value;
231
237
_textController = TextEditingController (
0 commit comments