TF-2724 Fix automatically scroll down when user click to edit one Profile Identity

This commit is contained in:
dab246
2024-04-16 09:46:14 +07:00
committed by Dat H. Pham
parent 6c13e00935
commit ef995d115b
2 changed files with 23 additions and 2 deletions
@@ -9,6 +9,7 @@ import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -85,6 +86,7 @@ class IdentityCreatorController extends BaseController {
final GlobalKey htmlKey = GlobalKey(); final GlobalKey htmlKey = GlobalKey();
final htmlEditorMinHeight = 150; final htmlEditorMinHeight = 150;
bool isLoadSignatureCompleted = false;
void updateNameIdentity(BuildContext context, String? value) { void updateNameIdentity(BuildContext context, String? value) {
_nameIdentity = value?.trim(); _nameIdentity = value?.trim();
@@ -137,6 +139,7 @@ class IdentityCreatorController extends BaseController {
@override @override
void onClose() { void onClose() {
log('IdentityCreatorController::onClose():'); log('IdentityCreatorController::onClose():');
isLoadSignatureCompleted = false;
inputNameIdentityFocusNode.dispose(); inputNameIdentityFocusNode.dispose();
inputBccIdentityFocusNode.dispose(); inputBccIdentityFocusNode.dispose();
inputNameIdentityController.dispose(); inputNameIdentityController.dispose();
@@ -665,4 +668,17 @@ class IdentityCreatorController extends BaseController {
return math.max(responsiveUtils.getSizeScreenWidth(context) * 0.4, IdentityCreatorConstants.maxWidthInlineImageOther); return math.max(responsiveUtils.getSizeScreenWidth(context) * 0.4, IdentityCreatorConstants.maxWidthInlineImageOther);
} }
} }
void onLoadSignatureCompleted(String? content) {
isLoadSignatureCompleted = true;
SchedulerBinding.instance.addPostFrameCallback((_) {
if (scrollController.hasClients) {
scrollController.animateTo(
0,
duration: const Duration(milliseconds: 200),
curve: Curves.fastOutSlowIn
);
}
});
}
} }
@@ -440,7 +440,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
shouldEnsureVisible: true, shouldEnsureVisible: true,
hint: '', hint: '',
darkMode: false, darkMode: false,
initialText: initContent, initialText: initContent.isEmpty ? null : initContent,
customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(direction: AppUtils.getCurrentDirection(context)), customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(direction: AppUtils.getCurrentDirection(context)),
), ),
htmlToolbarOptions: const html_editor_browser.HtmlToolbarOptions( htmlToolbarOptions: const html_editor_browser.HtmlToolbarOptions(
@@ -450,7 +450,12 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
otherOptions: const html_editor_browser.OtherOptions(height: 200), otherOptions: const html_editor_browser.OtherOptions(height: 200),
callbacks: html_editor_browser.Callbacks( callbacks: html_editor_browser.Callbacks(
onBeforeCommand: controller.updateContentHtmlEditor, onBeforeCommand: controller.updateContentHtmlEditor,
onChangeContent: controller.updateContentHtmlEditor, onChangeContent: (content) {
controller.updateContentHtmlEditor(content);
if (!controller.isLoadSignatureCompleted) {
controller.onLoadSignatureCompleted(content);
}
},
onInit: () { onInit: () {
controller.richTextWebController?.editorController.setFullScreen(); controller.richTextWebController?.editorController.setFullScreen();
controller.updateContentHtmlEditor(initContent); controller.updateContentHtmlEditor(initContent);