TF-1573: Remove double cursor on android

(cherry picked from commit f6dad776b6e91d11ef0215f6fddd22590e1f5def)
This commit is contained in:
ManhNTX
2023-03-17 12:55:58 +07:00
committed by Dat Vu
parent fde39b991a
commit 1887a810e5
2 changed files with 30 additions and 8 deletions
@@ -126,6 +126,8 @@ class ComposerController extends BaseController {
FocusNode? subjectEmailInputFocusNode; FocusNode? subjectEmailInputFocusNode;
FocusNode? toAddressFocusNode; FocusNode? toAddressFocusNode;
FocusNode? ccAddressFocusNode;
FocusNode? bccAddressFocusNode;
final RichTextController keyboardRichTextController = RichTextController(); final RichTextController keyboardRichTextController = RichTextController();
@@ -248,6 +250,10 @@ class ComposerController extends BaseController {
subjectEmailInputFocusNode = null; subjectEmailInputFocusNode = null;
toAddressFocusNode?.dispose(); toAddressFocusNode?.dispose();
toAddressFocusNode = null; toAddressFocusNode = null;
ccAddressFocusNode?.dispose();
ccAddressFocusNode = null;
bccAddressFocusNode?.dispose();
bccAddressFocusNode = null;
subjectEmailInputController.dispose(); subjectEmailInputController.dispose();
toEmailAddressController.dispose(); toEmailAddressController.dispose();
ccEmailAddressController.dispose(); ccEmailAddressController.dispose();
@@ -331,6 +337,8 @@ class ComposerController extends BaseController {
void createFocusNodeInput() { void createFocusNodeInput() {
toAddressFocusNode = FocusNode(); toAddressFocusNode = FocusNode();
subjectEmailInputFocusNode = FocusNode(); subjectEmailInputFocusNode = FocusNode();
ccAddressFocusNode = FocusNode();
bccAddressFocusNode = FocusNode();
subjectEmailInputFocusNode?.addListener(() { subjectEmailInputFocusNode?.addListener(() {
log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}'); log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}');
@@ -1508,9 +1516,16 @@ class ComposerController extends BaseController {
if (Platform.isAndroid) { if (Platform.isAndroid) {
_collapseAllRecipient(); _collapseAllRecipient();
_autoCreateEmailTag(); _autoCreateEmailTag();
_removeFocusAllInputEditorHeader();
} }
} }
void _removeFocusAllInputEditorHeader() {
subjectEmailInputFocusNode?.unfocus();
toAddressFocusNode?.unfocus();
ccAddressFocusNode?.unfocus();
bccAddressFocusNode?.unfocus();
}
void _onChangeCursorOnMobile(List<int>? coordinates) { void _onChangeCursorOnMobile(List<int>? coordinates) {
final headerEditorMobileWidgetRenderObject = headerEditorMobileWidgetKey.currentContext?.findRenderObject(); final headerEditorMobileWidgetRenderObject = headerEditorMobileWidgetKey.currentContext?.findRenderObject();
@@ -379,6 +379,7 @@ class ComposerView extends GetWidget<ComposerController>
PrefixEmailAddress.cc, PrefixEmailAddress.cc,
controller.listCcEmailAddress, controller.listCcEmailAddress,
controller.listEmailAddressType, controller.listEmailAddressType,
focusNode: controller.ccAddressFocusNode,
expandMode: controller.ccAddressExpandMode.value, expandMode: controller.ccAddressExpandMode.value,
controller: controller.ccEmailAddressController, controller: controller.ccEmailAddressController,
keyTagEditor: controller.keyCcEmailTagEditor, keyTagEditor: controller.keyCcEmailTagEditor,
@@ -404,6 +405,7 @@ class ComposerView extends GetWidget<ComposerController>
PrefixEmailAddress.bcc, PrefixEmailAddress.bcc,
controller.listBccEmailAddress, controller.listBccEmailAddress,
controller.listEmailAddressType, controller.listEmailAddressType,
focusNode: controller.bccAddressFocusNode,
expandMode: controller.bccAddressExpandMode.value, expandMode: controller.bccAddressExpandMode.value,
controller: controller.bccEmailAddressController, controller: controller.bccEmailAddressController,
keyTagEditor: controller.keyBccEmailTagEditor, keyTagEditor: controller.keyBccEmailTagEditor,
@@ -627,14 +629,19 @@ class ComposerView extends GetWidget<ComposerController>
} }
Widget _buildHtmlEditor(BuildContext context, {String? initialContent}) { Widget _buildHtmlEditor(BuildContext context, {String? initialContent}) {
return Padding( return GestureDetector(
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), onTapDown: (_) {
child: HtmlEditor( FocusManager.instance.primaryFocus?.unfocus();
key: const Key('composer_editor'), },
minHeight: 550, child: Padding(
addDefaultSelectionMenuItems: false, padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20),
initialContent: initialContent ?? '', child: HtmlEditor(
onCreated: (editorApi) => controller.initRichTextForMobile(context, editorApi, initialContent) key: const Key('composer_editor'),
minHeight: 550,
addDefaultSelectionMenuItems: false,
initialContent: initialContent ?? '',
onCreated: (editorApi) => controller.initRichTextForMobile(context, editorApi)
),
), ),
); );
} }