@@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
5
5
import 'package:image_picker/image_picker.dart' ;
6
6
7
7
import '../api/route/messages.dart' ;
8
+ import '../model/autocomplete.dart' ;
8
9
import '../model/narrow.dart' ;
9
10
import '../model/store.dart' ;
10
11
import 'dialog.dart' ;
@@ -173,6 +174,8 @@ class _StreamContentInput extends StatefulWidget {
173
174
}
174
175
175
176
class _StreamContentInputState extends State <_StreamContentInput > {
177
+ MentionAutocompleteView ? _mentionAutocompleteView; // TODO different autocomplete view types
178
+
176
179
late String _topicTextNormalized;
177
180
178
181
_topicChanged () {
@@ -181,16 +184,32 @@ class _StreamContentInputState extends State<_StreamContentInput> {
181
184
});
182
185
}
183
186
187
+ _changed () {
188
+ final newAutocompleteIntent = widget.controller.autocompleteIntent ();
189
+ if (newAutocompleteIntent != null ) {
190
+ _mentionAutocompleteView ?? = MentionAutocompleteView .init (
191
+ store: widget.store, narrow: widget.narrow);
192
+ _mentionAutocompleteView! .query = newAutocompleteIntent.query;
193
+ } else {
194
+ if (_mentionAutocompleteView != null ) {
195
+ _mentionAutocompleteView! .dispose ();
196
+ _mentionAutocompleteView = null ;
197
+ }
198
+ }
199
+ }
200
+
184
201
@override
185
202
void initState () {
186
203
super .initState ();
187
204
_topicTextNormalized = widget.topicController.textNormalized ();
188
205
widget.topicController.addListener (_topicChanged);
206
+ widget.controller.addListener (_changed);
189
207
}
190
208
191
209
@override
192
210
void dispose () {
193
211
widget.topicController.removeListener (_topicChanged);
212
+ widget.controller.removeListener (_changed);
194
213
super .dispose ();
195
214
}
196
215
0 commit comments