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