@@ -3,8 +3,11 @@ import 'package:file_picker/file_picker.dart';
3
3
import 'package:flutter/material.dart' ;
4
4
import 'package:flutter/services.dart' ;
5
5
import 'package:image_picker/image_picker.dart' ;
6
- import 'dialog.dart' ;
7
6
7
+ import '../model/autocomplete.dart' ;
8
+ import '../model/narrow.dart' ;
9
+ import '../model/store.dart' ;
10
+ import 'dialog.dart' ;
8
11
import '../api/route/messages.dart' ;
9
12
import 'store.dart' ;
10
13
@@ -167,9 +170,36 @@ class _StreamContentInput extends StatefulWidget {
167
170
class _StreamContentInputState extends State <_StreamContentInput > {
168
171
late String _topicTextNormalized;
169
172
173
+ MentionAutocompleteView ? model;
174
+
175
+ @override
176
+ void didChangeDependencies () {
177
+ super .didChangeDependencies ();
178
+ final store = PerAccountStoreWidget .of (context);
179
+ if (model != null && model! .store == store) {
180
+ // We already have a model, and it's for the right store.
181
+ return ;
182
+ }
183
+ // Otherwise, set up the model. Dispose of any old model.
184
+ model? .dispose ();
185
+ _initModel (store);
186
+ }
187
+
188
+ void _initModel (PerAccountStore store) {
189
+ model = MentionAutocompleteView .init (store: store, narrow: const AllMessagesNarrow ());
190
+ model! .addListener (_modelChanged);
191
+ }
192
+
193
+ void _modelChanged () {
194
+ setState (() {
195
+ // The actual state lives in the [MessageListView] model.
196
+ // This method was called because that just changed.
197
+ });
198
+ }
199
+
170
200
_topicChanged () {
171
201
setState (() {
172
- _topicTextNormalized = widget.topicController.textNormalized ();
202
+ model ? .query = MentionAutocompleteQuery ( widget.topicController.textNormalized () );
173
203
});
174
204
}
175
205
@@ -182,6 +212,7 @@ class _StreamContentInputState extends State<_StreamContentInput> {
182
212
183
213
@override
184
214
void dispose () {
215
+ print (model! .results.map ((r) => (r as UserMentionAutocompleteResult ).userId));
185
216
widget.topicController.removeListener (_topicChanged);
186
217
super .dispose ();
187
218
}
0 commit comments