From d1bec5af24c256f5c3b24e9e7f7d0aad8b7bdba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 11 Dec 2025 11:52:05 +0100 Subject: [PATCH] Use ValueNotifier instead of setState in AIScribeBar --- .../presentation/widgets/ai_scribe_bar.dart | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/scribe/lib/scribe/ai/presentation/widgets/ai_scribe_bar.dart b/scribe/lib/scribe/ai/presentation/widgets/ai_scribe_bar.dart index ae8ae2dfe..4972fe681 100644 --- a/scribe/lib/scribe/ai/presentation/widgets/ai_scribe_bar.dart +++ b/scribe/lib/scribe/ai/presentation/widgets/ai_scribe_bar.dart @@ -22,7 +22,7 @@ class AIScribeBar extends StatefulWidget { class _AIScribeBarState extends State { final TextEditingController _controller = TextEditingController(); - bool _isButtonEnabled = false; + final ValueNotifier _isButtonEnabled = ValueNotifier(false); @override void initState() { @@ -34,13 +34,12 @@ class _AIScribeBarState extends State { void dispose() { _controller.removeListener(_onTextChanged); _controller.dispose(); + _isButtonEnabled.dispose(); super.dispose(); } void _onTextChanged() { - setState(() { - _isButtonEnabled = _controller.text.trim().isNotEmpty; - }); + _isButtonEnabled.value = _controller.text.trim().isNotEmpty; } void _onSendPressed() { @@ -73,14 +72,19 @@ class _AIScribeBarState extends State { ), ), const SizedBox(width: AIScribeSizes.fieldSpacing), - TMailButtonWidget.fromIcon( - icon: widget.imagePaths.icSend, - iconSize: AIScribeSizes.sendIconSize, - iconColor: Colors.white, - backgroundColor: _isButtonEnabled - ? AIScribeButtonStyles.sendCustomPromptBackgroundColor - : AIScribeButtonStyles.sendCustomPromptBackgroundColorDisabled, - onTapActionCallback: _isButtonEnabled ? _onSendPressed : null, + ValueListenableBuilder( + valueListenable: _isButtonEnabled, + builder: (context, isEnabled, child) { + return TMailButtonWidget.fromIcon( + icon: widget.imagePaths.icSend, + iconSize: AIScribeSizes.sendIconSize, + iconColor: Colors.white, + backgroundColor: isEnabled + ? AIScribeButtonStyles.sendCustomPromptBackgroundColor + : AIScribeButtonStyles.sendCustomPromptBackgroundColorDisabled, + onTapActionCallback: isEnabled ? _onSendPressed : null, + ); + }, ) ], ),