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
@@ -44,6 +44,9 @@ class VacationController extends BaseController {
final messageTextController = TextEditingController();
final subjectTextController = TextEditingController();
final richTextControllerForMobile = RichTextController();
final htmlEditorMinHeight = 150;
final GlobalKey htmlKey = GlobalKey();
VacationResponse? currentVacation;
String? _vacationMessageHtmlText;
@@ -51,7 +54,6 @@ class VacationController extends BaseController {
late Worker vacationWorker;
final ScrollController scrollController = ScrollController();
double currentPositionYHTMLEditor = 660;
VacationController(
this._getAllVacationInteractor,
@@ -361,20 +363,25 @@ class VacationController extends BaseController {
_settingController.backToUniversalSettings();
}
void onFocusHTMLEditor() {
scrollController.animateTo(
currentPositionYHTMLEditor,
duration: const Duration(milliseconds: 300),
curve: Curves.linear,
);
void onFocusHTMLEditor() async {
await Scrollable.ensureVisible(htmlKey.currentContext!);
await Future.delayed(const Duration(milliseconds: 500), () {
scrollController.animateTo(
scrollController.position.pixels + defaultKeyboardToolbarHeight + htmlEditorMinHeight,
duration: const Duration(milliseconds: 1),
curve: Curves.linear,
);
});
}
void onEnterKeyDown() {
scrollController.animateTo(
currentPositionYHTMLEditor + richTextControllerForMobile.currentLine * 20,
duration: const Duration(milliseconds: 300),
curve: Curves.linear,
);
if(scrollController.position.pixels < scrollController.position.maxScrollExtent) {
scrollController.animateTo(
scrollController.position.pixels + 20,
duration: const Duration(milliseconds: 1),
curve: Curves.linear,
);
}
}
@override
@@ -61,6 +61,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
: null,
padding: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils),
child: SingleChildScrollView(
physics: const ClampingScrollPhysics(),
controller: controller.scrollController,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -469,8 +470,8 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
);
} else {
return html_editor_mobile.HtmlEditor(
key: const Key('vacation_message_html_text_editor_mobile'),
minHeight: 150,
key: controller.htmlKey,
minHeight: controller.htmlEditorMinHeight,
addDefaultSelectionMenuItems: false,
initialContent: controller.vacationMessageHtmlText ?? '',
onCreated: (htmlApi) {