TF-691 Support change focus input field by TAB key on web keyboard

This commit is contained in:
dab246
2022-08-04 15:20:18 +07:00
committed by Dat H. Pham
parent 6a96117355
commit 6b1d967861
6 changed files with 291 additions and 127 deletions
@@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/input_field_focus_manager.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
@@ -44,6 +45,8 @@ class AdvancedFilterController extends GetxController {
SearchEmailFilter get searchEmailFilter =>
searchController.searchEmailFilter.value;
final focusManager = InputFieldFocusManager.initial();
@override
void onReady() async {
if (!BuildUtils.isWeb) {
@@ -202,6 +205,7 @@ class AdvancedFilterController extends GetxController {
@override
void onClose() {
focusManager.dispose();
subjectFilterInputController.dispose();
hasKeyWordFilterInputController.dispose();
notKeyWordFilterInputController.dispose();
@@ -0,0 +1,40 @@
import 'package:flutter/material.dart';
class InputFieldFocusManager {
late FocusNode fromFieldFocusNode;
late FocusNode toFieldFocusNode;
late FocusNode subjectFieldFocusNode;
late FocusNode hasKeywordFieldFocusNode;
late FocusNode notKeywordFieldFocusNode;
late FocusNode mailboxFieldFocusNode;
late FocusNode attachmentCheckboxFocusNode;
late FocusNode searchButtonFocusNode;
InputFieldFocusManager() {
fromFieldFocusNode = FocusNode();
toFieldFocusNode = FocusNode();
subjectFieldFocusNode = FocusNode();
hasKeywordFieldFocusNode = FocusNode();
notKeywordFieldFocusNode = FocusNode();
mailboxFieldFocusNode = FocusNode();
attachmentCheckboxFocusNode = FocusNode(skipTraversal: true);
searchButtonFocusNode = FocusNode();
}
factory InputFieldFocusManager.initial() {
return InputFieldFocusManager();
}
void dispose() {
fromFieldFocusNode.dispose();
toFieldFocusNode.dispose();
subjectFieldFocusNode.dispose();
hasKeywordFieldFocusNode.dispose();
notKeywordFieldFocusNode.dispose();
mailboxFieldFocusNode.dispose();
attachmentCheckboxFocusNode.dispose();
searchButtonFocusNode.dispose();
}
}