@@ -277,14 +277,12 @@ class _ContentInput extends StatefulWidget {
277
277
required this .narrow,
278
278
required this .destination,
279
279
required this .controller,
280
- required this .focusNode,
281
280
required this .hintText,
282
281
});
283
282
284
283
final Narrow narrow;
285
284
final SendableNarrow destination;
286
- final ComposeContentController controller;
287
- final FocusNode focusNode;
285
+ final ComposeBoxController controller;
288
286
final String hintText;
289
287
290
288
@override
@@ -295,41 +293,39 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
295
293
@override
296
294
void initState () {
297
295
super .initState ();
298
- widget.controller.addListener (_contentChanged);
299
- widget.focusNode .addListener (_focusChanged);
296
+ widget.controller.content. addListener (_contentChanged);
297
+ widget.controller.contentFocusNode .addListener (_focusChanged);
300
298
WidgetsBinding .instance.addObserver (this );
301
299
}
302
300
303
301
@override
304
302
void didUpdateWidget (covariant _ContentInput oldWidget) {
305
303
super .didUpdateWidget (oldWidget);
306
304
if (widget.controller != oldWidget.controller) {
307
- oldWidget.controller.removeListener (_contentChanged);
308
- widget.controller.addListener (_contentChanged);
309
- }
310
- if (widget.focusNode != oldWidget.focusNode) {
311
- oldWidget.focusNode.removeListener (_focusChanged);
312
- widget.focusNode.addListener (_focusChanged);
305
+ oldWidget.controller.content.removeListener (_contentChanged);
306
+ widget.controller.content.addListener (_contentChanged);
307
+ oldWidget.controller.contentFocusNode.removeListener (_focusChanged);
308
+ widget.controller.contentFocusNode.addListener (_focusChanged);
313
309
}
314
310
}
315
311
316
312
@override
317
313
void dispose () {
318
- widget.controller.removeListener (_contentChanged);
319
- widget.focusNode .removeListener (_focusChanged);
314
+ widget.controller.content. removeListener (_contentChanged);
315
+ widget.controller.contentFocusNode .removeListener (_focusChanged);
320
316
WidgetsBinding .instance.removeObserver (this );
321
317
super .dispose ();
322
318
}
323
319
324
320
void _contentChanged () {
325
321
final store = PerAccountStoreWidget .of (context);
326
- (widget.controller.text.isEmpty)
322
+ (widget.controller.content. text.isEmpty)
327
323
? store.typingNotifier.stoppedComposing ()
328
324
: store.typingNotifier.keystroke (widget.destination);
329
325
}
330
326
331
327
void _focusChanged () {
332
- if (widget.focusNode .hasFocus) {
328
+ if (widget.controller.contentFocusNode .hasFocus) {
333
329
// Content input getting focus doesn't necessarily mean that
334
330
// the user started typing, so do nothing.
335
331
return ;
@@ -397,8 +393,8 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
397
393
398
394
return ComposeAutocomplete (
399
395
narrow: widget.narrow,
400
- controller: widget.controller,
401
- focusNode: widget.focusNode ,
396
+ controller: widget.controller.content ,
397
+ focusNode: widget.controller.contentFocusNode ,
402
398
fieldViewBuilder: (context) => ConstrainedBox (
403
399
constraints: BoxConstraints (maxHeight: maxHeight (context)),
404
400
// This [ClipRect] replaces the [TextField] clipping we disable below.
@@ -407,8 +403,8 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
407
403
top: _verticalPadding, bottom: _verticalPadding,
408
404
color: designVariables.composeBoxBg,
409
405
child: TextField (
410
- controller: widget.controller,
411
- focusNode: widget.focusNode ,
406
+ controller: widget.controller.content ,
407
+ focusNode: widget.controller.contentFocusNode ,
412
408
// Let the content show through the `contentPadding` so that
413
409
// our [InsetShadowBox] can fade it smoothly there.
414
410
clipBehavior: Clip .none,
@@ -491,8 +487,7 @@ class _StreamContentInputState extends State<_StreamContentInput> {
491
487
return _ContentInput (
492
488
narrow: widget.narrow,
493
489
destination: TopicNarrow (widget.narrow.streamId, _topicTextNormalized),
494
- controller: widget.controller.content,
495
- focusNode: widget.controller.contentFocusNode,
490
+ controller: widget.controller,
496
491
hintText: zulipLocalizations.composeBoxChannelContentHint (streamName, _topicTextNormalized));
497
492
}
498
493
}
@@ -578,8 +573,7 @@ class _FixedDestinationContentInput extends StatelessWidget {
578
573
return _ContentInput (
579
574
narrow: narrow,
580
575
destination: narrow,
581
- controller: controller.content,
582
- focusNode: controller.contentFocusNode,
576
+ controller: controller,
583
577
hintText: _hintText (context));
584
578
}
585
579
}
0 commit comments