TF-1033: replace hard code position by scrollController.position.pixels

This commit is contained in:
ManhNTX
2022-10-07 06:47:02 +07:00
committed by Dat H. Pham
parent a7c1d002d3
commit faa22be837
6 changed files with 48 additions and 35 deletions
@@ -1366,12 +1366,13 @@ class ComposerController extends BaseController {
popBack(); popBack();
} }
void onEnterKeyDown() { void onEnterKeyDown() {
scrollController.animateTo( if(scrollController.position.pixels < scrollController.position.maxScrollExtent) {
keyboardRichTextController.currentLine * 20, scrollController.animateTo(
duration: const Duration(milliseconds: 300), scrollController.position.pixels + 20,
curve: Curves.linear, duration: const Duration(milliseconds: 1),
); curve: Curves.linear,
);
}
} }
} }
@@ -66,7 +66,7 @@ class IdentityCreatorController extends BaseController {
String? _contentHtmlEditor; String? _contentHtmlEditor;
final ScrollController scrollController = ScrollController(); final ScrollController scrollController = ScrollController();
double currentPositionYHTMLEditor = 250; final GlobalKey htmlKey = GlobalKey();
void updateNameIdentity(BuildContext context, String? value) { void updateNameIdentity(BuildContext context, String? value) {
_nameIdentity = value; _nameIdentity = value;
@@ -405,19 +405,24 @@ class IdentityCreatorController extends BaseController {
} }
} }
void onFocusHTMLEditor() { void onFocusHTMLEditor() async {
scrollController.animateTo( await Scrollable.ensureVisible(htmlKey.currentContext!);
currentPositionYHTMLEditor, await Future.delayed(const Duration(milliseconds: 500), () {
duration: const Duration(milliseconds: 300), scrollController.animateTo(
curve: Curves.linear, scrollController.position.pixels + defaultKeyboardToolbarHeight,
); duration: const Duration(milliseconds: 1),
curve: Curves.linear,
);
});
} }
void onEnterKeyDown() { void onEnterKeyDown() {
scrollController.animateTo( if(scrollController.position.pixels < scrollController.position.maxScrollExtent) {
currentPositionYHTMLEditor - keyboardRichTextController.currentLine * 20, scrollController.animateTo(
duration: const Duration(milliseconds: 300), scrollController.position.pixels + 20,
curve: Curves.linear, duration: const Duration(milliseconds: 1),
); curve: Curves.linear,
);
}
} }
} }
@@ -285,7 +285,6 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
child: SingleChildScrollView( child: SingleChildScrollView(
controller: controller.scrollController, controller: controller.scrollController,
physics: const ClampingScrollPhysics(), physics: const ClampingScrollPhysics(),
reverse: true,
child: Padding( child: Padding(
padding: const EdgeInsets.all(24.0), padding: const EdgeInsets.all(24.0),
child: Column(children: [ child: Column(children: [
@@ -510,7 +509,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
); );
} else { } else {
return html_editor_mobile.HtmlEditor( return html_editor_mobile.HtmlEditor(
key:const Key('html_editor_mobile'), key: controller.htmlKey,
minHeight: 230, minHeight: 230,
onCreated: (htmlEditorController) { onCreated: (htmlEditorController) {
controller.keyboardRichTextController.onCreateHTMLEditor( controller.keyboardRichTextController.onCreateHTMLEditor(
@@ -44,6 +44,9 @@ class VacationController extends BaseController {
final messageTextController = TextEditingController(); final messageTextController = TextEditingController();
final subjectTextController = TextEditingController(); final subjectTextController = TextEditingController();
final richTextControllerForMobile = RichTextController(); final richTextControllerForMobile = RichTextController();
final htmlEditorMinHeight = 150;
final GlobalKey htmlKey = GlobalKey();
VacationResponse? currentVacation; VacationResponse? currentVacation;
String? _vacationMessageHtmlText; String? _vacationMessageHtmlText;
@@ -51,7 +54,6 @@ class VacationController extends BaseController {
late Worker vacationWorker; late Worker vacationWorker;
final ScrollController scrollController = ScrollController(); final ScrollController scrollController = ScrollController();
double currentPositionYHTMLEditor = 660;
VacationController( VacationController(
this._getAllVacationInteractor, this._getAllVacationInteractor,
@@ -361,20 +363,25 @@ class VacationController extends BaseController {
_settingController.backToUniversalSettings(); _settingController.backToUniversalSettings();
} }
void onFocusHTMLEditor() { void onFocusHTMLEditor() async {
scrollController.animateTo( await Scrollable.ensureVisible(htmlKey.currentContext!);
currentPositionYHTMLEditor, await Future.delayed(const Duration(milliseconds: 500), () {
duration: const Duration(milliseconds: 300), scrollController.animateTo(
curve: Curves.linear, scrollController.position.pixels + defaultKeyboardToolbarHeight + htmlEditorMinHeight,
); duration: const Duration(milliseconds: 1),
curve: Curves.linear,
);
});
} }
void onEnterKeyDown() { void onEnterKeyDown() {
scrollController.animateTo( if(scrollController.position.pixels < scrollController.position.maxScrollExtent) {
currentPositionYHTMLEditor + richTextControllerForMobile.currentLine * 20, scrollController.animateTo(
duration: const Duration(milliseconds: 300), scrollController.position.pixels + 20,
curve: Curves.linear, duration: const Duration(milliseconds: 1),
); curve: Curves.linear,
);
}
} }
@override @override
@@ -61,6 +61,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
: null, : null,
padding: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils), padding: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils),
child: SingleChildScrollView( child: SingleChildScrollView(
physics: const ClampingScrollPhysics(),
controller: controller.scrollController, controller: controller.scrollController,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@@ -469,8 +470,8 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
); );
} else { } else {
return html_editor_mobile.HtmlEditor( return html_editor_mobile.HtmlEditor(
key: const Key('vacation_message_html_text_editor_mobile'), key: controller.htmlKey,
minHeight: 150, minHeight: controller.htmlEditorMinHeight,
addDefaultSelectionMenuItems: false, addDefaultSelectionMenuItems: false,
initialContent: controller.vacationMessageHtmlText ?? '', initialContent: controller.vacationMessageHtmlText ?? '',
onCreated: (htmlApi) { onCreated: (htmlApi) {
+1 -1
View File
@@ -1012,7 +1012,7 @@ packages:
name: permission_handler_platform_interface name: permission_handler_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.8.0" version: "3.9.0"
permission_handler_windows: permission_handler_windows:
dependency: transitive dependency: transitive
description: description: