Skip to content

Commit f65dc80

Browse files
committed
compose [nfc]: Pass controller down (3/6); _ContentInput
1 parent 6bc6169 commit f65dc80

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

lib/widgets/compose_box.dart

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -277,14 +277,12 @@ class _ContentInput extends StatefulWidget {
277277
required this.narrow,
278278
required this.destination,
279279
required this.controller,
280-
required this.focusNode,
281280
required this.hintText,
282281
});
283282

284283
final Narrow narrow;
285284
final SendableNarrow destination;
286-
final ComposeContentController controller;
287-
final FocusNode focusNode;
285+
final ComposeBoxController controller;
288286
final String hintText;
289287

290288
@override
@@ -295,41 +293,39 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
295293
@override
296294
void initState() {
297295
super.initState();
298-
widget.controller.addListener(_contentChanged);
299-
widget.focusNode.addListener(_focusChanged);
296+
widget.controller.content.addListener(_contentChanged);
297+
widget.controller.contentFocusNode.addListener(_focusChanged);
300298
WidgetsBinding.instance.addObserver(this);
301299
}
302300

303301
@override
304302
void didUpdateWidget(covariant _ContentInput oldWidget) {
305303
super.didUpdateWidget(oldWidget);
306304
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);
313309
}
314310
}
315311

316312
@override
317313
void dispose() {
318-
widget.controller.removeListener(_contentChanged);
319-
widget.focusNode.removeListener(_focusChanged);
314+
widget.controller.content.removeListener(_contentChanged);
315+
widget.controller.contentFocusNode.removeListener(_focusChanged);
320316
WidgetsBinding.instance.removeObserver(this);
321317
super.dispose();
322318
}
323319

324320
void _contentChanged() {
325321
final store = PerAccountStoreWidget.of(context);
326-
(widget.controller.text.isEmpty)
322+
(widget.controller.content.text.isEmpty)
327323
? store.typingNotifier.stoppedComposing()
328324
: store.typingNotifier.keystroke(widget.destination);
329325
}
330326

331327
void _focusChanged() {
332-
if (widget.focusNode.hasFocus) {
328+
if (widget.controller.contentFocusNode.hasFocus) {
333329
// Content input getting focus doesn't necessarily mean that
334330
// the user started typing, so do nothing.
335331
return;
@@ -397,8 +393,8 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
397393

398394
return ComposeAutocomplete(
399395
narrow: widget.narrow,
400-
controller: widget.controller,
401-
focusNode: widget.focusNode,
396+
controller: widget.controller.content,
397+
focusNode: widget.controller.contentFocusNode,
402398
fieldViewBuilder: (context) => ConstrainedBox(
403399
constraints: BoxConstraints(maxHeight: maxHeight(context)),
404400
// This [ClipRect] replaces the [TextField] clipping we disable below.
@@ -407,8 +403,8 @@ class _ContentInputState extends State<_ContentInput> with WidgetsBindingObserve
407403
top: _verticalPadding, bottom: _verticalPadding,
408404
color: designVariables.composeBoxBg,
409405
child: TextField(
410-
controller: widget.controller,
411-
focusNode: widget.focusNode,
406+
controller: widget.controller.content,
407+
focusNode: widget.controller.contentFocusNode,
412408
// Let the content show through the `contentPadding` so that
413409
// our [InsetShadowBox] can fade it smoothly there.
414410
clipBehavior: Clip.none,
@@ -491,8 +487,7 @@ class _StreamContentInputState extends State<_StreamContentInput> {
491487
return _ContentInput(
492488
narrow: widget.narrow,
493489
destination: TopicNarrow(widget.narrow.streamId, _topicTextNormalized),
494-
controller: widget.controller.content,
495-
focusNode: widget.controller.contentFocusNode,
490+
controller: widget.controller,
496491
hintText: zulipLocalizations.composeBoxChannelContentHint(streamName, _topicTextNormalized));
497492
}
498493
}
@@ -578,8 +573,7 @@ class _FixedDestinationContentInput extends StatelessWidget {
578573
return _ContentInput(
579574
narrow: narrow,
580575
destination: narrow,
581-
controller: controller.content,
582-
focusNode: controller.contentFocusNode,
576+
controller: controller,
583577
hintText: _hintText(context));
584578
}
585579
}

0 commit comments

Comments
 (0)