diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 8dacaa67a..be33d94fb 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -126,6 +126,8 @@ class ComposerController extends BaseController { FocusNode? subjectEmailInputFocusNode; FocusNode? toAddressFocusNode; + FocusNode? ccAddressFocusNode; + FocusNode? bccAddressFocusNode; final RichTextController keyboardRichTextController = RichTextController(); @@ -248,6 +250,10 @@ class ComposerController extends BaseController { subjectEmailInputFocusNode = null; toAddressFocusNode?.dispose(); toAddressFocusNode = null; + ccAddressFocusNode?.dispose(); + ccAddressFocusNode = null; + bccAddressFocusNode?.dispose(); + bccAddressFocusNode = null; subjectEmailInputController.dispose(); toEmailAddressController.dispose(); ccEmailAddressController.dispose(); @@ -331,6 +337,8 @@ class ComposerController extends BaseController { void createFocusNodeInput() { toAddressFocusNode = FocusNode(); subjectEmailInputFocusNode = FocusNode(); + ccAddressFocusNode = FocusNode(); + bccAddressFocusNode = FocusNode(); subjectEmailInputFocusNode?.addListener(() { log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}'); @@ -1508,9 +1516,16 @@ class ComposerController extends BaseController { if (Platform.isAndroid) { _collapseAllRecipient(); _autoCreateEmailTag(); + _removeFocusAllInputEditorHeader(); } } + void _removeFocusAllInputEditorHeader() { + subjectEmailInputFocusNode?.unfocus(); + toAddressFocusNode?.unfocus(); + ccAddressFocusNode?.unfocus(); + bccAddressFocusNode?.unfocus(); + } void _onChangeCursorOnMobile(List? coordinates) { final headerEditorMobileWidgetRenderObject = headerEditorMobileWidgetKey.currentContext?.findRenderObject(); diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index d9ff3d8f8..2036c1a03 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -379,6 +379,7 @@ class ComposerView extends GetWidget PrefixEmailAddress.cc, controller.listCcEmailAddress, controller.listEmailAddressType, + focusNode: controller.ccAddressFocusNode, expandMode: controller.ccAddressExpandMode.value, controller: controller.ccEmailAddressController, keyTagEditor: controller.keyCcEmailTagEditor, @@ -404,6 +405,7 @@ class ComposerView extends GetWidget PrefixEmailAddress.bcc, controller.listBccEmailAddress, controller.listEmailAddressType, + focusNode: controller.bccAddressFocusNode, expandMode: controller.bccAddressExpandMode.value, controller: controller.bccEmailAddressController, keyTagEditor: controller.keyBccEmailTagEditor, @@ -627,14 +629,19 @@ class ComposerView extends GetWidget } Widget _buildHtmlEditor(BuildContext context, {String? initialContent}) { - return Padding( - padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), - child: HtmlEditor( - key: const Key('composer_editor'), - minHeight: 550, - addDefaultSelectionMenuItems: false, - initialContent: initialContent ?? '', - onCreated: (editorApi) => controller.initRichTextForMobile(context, editorApi, initialContent) + return GestureDetector( + onTapDown: (_) { + FocusManager.instance.primaryFocus?.unfocus(); + }, + child: Padding( + padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), + child: HtmlEditor( + key: const Key('composer_editor'), + minHeight: 550, + addDefaultSelectionMenuItems: false, + initialContent: initialContent ?? '', + onCreated: (editorApi) => controller.initRichTextForMobile(context, editorApi) + ), ), ); }