TF-1033: Auto scroll composer to follow user typing

This commit is contained in:
ManhNTX
2022-10-05 06:12:29 +07:00
committed by Dat H. Pham
parent d968fd35c6
commit 6db9d818f4
3 changed files with 10 additions and 3 deletions
@@ -116,6 +116,8 @@ class ComposerController extends BaseController {
final RichTextController keyboardRichTextController = RichTextController(); final RichTextController keyboardRichTextController = RichTextController();
final ScrollController scrollController = ScrollController();
List<Attachment> initialAttachments = <Attachment>[]; List<Attachment> initialAttachments = <Attachment>[];
String? _textEditorWeb; String? _textEditorWeb;
List<EmailContent>? _emailContents; List<EmailContent>? _emailContents;
@@ -219,6 +221,7 @@ class ComposerController extends BaseController {
bccEmailAddressController.dispose(); bccEmailAddressController.dispose();
uploadInlineImageWorker.dispose(); uploadInlineImageWorker.dispose();
keyboardRichTextController.dispose(); keyboardRichTextController.dispose();
scrollController.dispose();
super.dispose(); super.dispose();
} }
@@ -399,6 +399,7 @@ class ComposerView extends GetWidget<ComposerController>
Widget _buildBodyMobile(BuildContext context, double maxWidth) { Widget _buildBodyMobile(BuildContext context, double maxWidth) {
return rich_text_composer.KeyboardRichText( return rich_text_composer.KeyboardRichText(
child: SingleChildScrollView( child: SingleChildScrollView(
controller: controller.scrollController,
physics: const ClampingScrollPhysics(), physics: const ClampingScrollPhysics(),
child: Column(children: [ child: Column(children: [
Obx(() => controller.identitySelected.value != null Obx(() => controller.identitySelected.value != null
@@ -629,7 +630,7 @@ class ComposerView extends GetWidget<ComposerController>
switch(argsComposer.emailActionType) { switch(argsComposer.emailActionType) {
case EmailActionType.compose: case EmailActionType.compose:
case EmailActionType.composeFromEmailAddress: case EmailActionType.composeFromEmailAddress:
return _buildHtmlEditor('', context); return _buildHtmlEditor(HtmlExtension.editorStartTags, context);
case EmailActionType.edit: case EmailActionType.edit:
return controller.emailContentsViewState.value.fold( return controller.emailContentsViewState.value.fold(
(failure) => _buildHtmlEditor(HtmlExtension.editorStartTags, context), (failure) => _buildHtmlEditor(HtmlExtension.editorStartTags, context),
@@ -677,7 +678,10 @@ class ComposerView extends GetWidget<ComposerController>
onCreated: (editorApi) { onCreated: (editorApi) {
richTextMobileTabletController.htmlEditorApi = editorApi; richTextMobileTabletController.htmlEditorApi = editorApi;
if(responsiveUtils.isMobile(context)){ if(responsiveUtils.isMobile(context)){
controller.keyboardRichTextController.onCreateHTMLEditor(editorApi); controller.keyboardRichTextController.onCreateHTMLEditor(
editorApi,
scrollController: controller.scrollController,
);
} else { } else {
richTextMobileTabletController.listenHtmlEditorApi(); richTextMobileTabletController.listenHtmlEditorApi();
} }
+1 -1
View File
@@ -45,7 +45,7 @@ dependencies:
rich_text_composer: rich_text_composer:
git: git:
url: https://github.com/linagora/rich-text-composer.git url: https://github.com/linagora/rich-text-composer.git
ref: master ref: apply_rich_text_bottom_sheet
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2