TF-3004 Fix open close advanced search looses data

This commit is contained in:
dab246
2024-10-09 11:14:47 +07:00
committed by Dat H. Pham
parent 6d0c7ed7f5
commit d77e1585b8
16 changed files with 681 additions and 274 deletions
@@ -12,11 +12,11 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterController> {
final InputFieldFocusManager? focusManager;
final InputFieldFocusManager focusManager;
const AdvancedSearchFilterFormBottomView({
Key? key,
this.focusManager,
required this.focusManager,
}) : super(key: key);
@override
@@ -30,8 +30,8 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
transform: Matrix4.translationValues(-8.0, 0.0, 0.0),
child: _buildCheckboxHasAttachment(
context,
currentFocusNode: focusManager?.attachmentCheckboxFocusNode,
nextFocusNode: focusManager?.searchButtonFocusNode),
currentFocusNode: focusManager.attachmentCheckboxFocusNode,
nextFocusNode: focusManager.searchButtonFocusNode),
),
_buildListButton(context, controller.responsiveUtils),
],
@@ -67,8 +67,8 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
text: AppLocalizations.of(context).search,
context: context,
responsiveUtils: responsiveUtils,
currentFocusNode: focusManager?.searchButtonFocusNode,
nextFocusNode: focusManager?.fromFieldFocusNode
currentFocusNode: focusManager.searchButtonFocusNode,
nextFocusNode: focusManager.fromFieldFocusNode
),
),
]);
@@ -99,8 +99,8 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
context: context,
responsiveUtils: responsiveUtils,
minWidth: 144,
currentFocusNode: focusManager?.searchButtonFocusNode,
nextFocusNode: focusManager?.fromFieldFocusNode
currentFocusNode: focusManager.searchButtonFocusNode,
nextFocusNode: focusManager.fromFieldFocusNode
),
]);
}
@@ -128,7 +128,7 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
contentPadding: EdgeInsets.zero,
value: controller.hasAttachment.value,
activeColor: AppColor.primaryColor,
onChanged: (value) => controller.hasAttachment.value = value ?? false,
onChanged: controller.onHasAttachmentCheckboxChanged,
),
),
);
@@ -60,14 +60,22 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
context: context,
advancedSearchFilterField: AdvancedSearchFilterField.subject,
currentFocusNode: controller.focusManager.subjectFieldFocusNode,
nextFocusNode: controller.focusManager.hasKeywordFieldFocusNode
nextFocusNode: controller.focusManager.hasKeywordFieldFocusNode,
onTextChange: (value) => controller.onTextChanged(
AdvancedSearchFilterField.subject,
value
),
),
_buildFilterField(
textEditingController: controller.hasKeyWordFilterInputController,
context: context,
advancedSearchFilterField: AdvancedSearchFilterField.hasKeyword,
currentFocusNode: controller.focusManager.hasKeywordFieldFocusNode,
nextFocusNode: controller.focusManager.notKeywordFieldFocusNode
nextFocusNode: controller.focusManager.notKeywordFieldFocusNode,
onTextChange: (value) => controller.onTextChanged(
AdvancedSearchFilterField.hasKeyword,
value
),
),
_buildFilterField(
textEditingController: controller.notKeyWordFilterInputController,
@@ -75,6 +83,10 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
advancedSearchFilterField: AdvancedSearchFilterField.notKeyword,
currentFocusNode: controller.focusManager.notKeywordFieldFocusNode,
nextFocusNode: controller.focusManager.mailboxFieldFocusNode,
onTextChange: (value) => controller.onTextChanged(
AdvancedSearchFilterField.notKeyword,
value
),
),
_buildFilterField(
textEditingController: controller.mailBoxFilterInputController,
@@ -127,7 +139,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
receiveTime.getTitle(context),
svgIconSelected: controller.imagePaths.icFilterSelected,
maxWidth: 320,
isSelected: controller.dateFilterSelectedFormAdvancedSearch.value == receiveTime,
isSelected: controller.receiveTimeType.value == receiveTime,
onCallbackAction: () => controller.updateReceiveDateSearchFilter(context, receiveTime),
)))
.toList();
@@ -142,6 +154,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
MouseCursor? mouseCursor,
FocusNode? currentFocusNode,
FocusNode? nextFocusNode,
ValueChanged<String>? onTextChange,
}) {
final child = [
SizedBox(
@@ -166,6 +179,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
nextFocusNode: nextFocusNode,
advancedSearchFilterField: advancedSearchFilterField,
textEditingController: textEditingController,
onTextChange: onTextChange,
)
else if (controller.responsiveUtils.landscapeTabletSupported(context))
if (advancedSearchFilterField == AdvancedSearchFilterField.date)
@@ -173,13 +187,13 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
controller.imagePaths,
startDate: controller.startDate.value,
endDate: controller.endDate.value,
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
receiveTimeSelected: controller.receiveTimeType.value,
onReceiveTimeSelected: (receiveTime) => controller.updateReceiveDateSearchFilter(context, receiveTime),
))
else if (advancedSearchFilterField == AdvancedSearchFilterField.sortBy)
Obx(() => SortByDropDownButton(
imagePaths: controller.imagePaths,
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
sortOrderSelected: controller.sortOrderType.value,
onSortOrderSelected: controller.updateSortOrder,
))
else
@@ -192,6 +206,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
nextFocusNode: nextFocusNode,
advancedSearchFilterField: advancedSearchFilterField,
textEditingController: textEditingController,
onTextChange: onTextChange,
)
else
Expanded(
@@ -204,6 +219,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
nextFocusNode: nextFocusNode,
advancedSearchFilterField: advancedSearchFilterField,
textEditingController: textEditingController,
onTextChange: onTextChange,
),
)
];
@@ -229,6 +245,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
MouseCursor? mouseCursor,
FocusNode? currentFocusNode,
FocusNode? nextFocusNode,
ValueChanged<String>? onTextChange,
}) {
switch (advancedSearchFilterField) {
case AdvancedSearchFilterField.date:
@@ -236,13 +253,13 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
controller.imagePaths,
startDate: controller.startDate.value,
endDate: controller.endDate.value,
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
receiveTimeSelected: controller.receiveTimeType.value,
onReceiveTimeSelected: (receiveTime) => controller.updateReceiveDateSearchFilter(context, receiveTime),
));
case AdvancedSearchFilterField.sortBy:
return Obx(() => SortByDropDownButton(
imagePaths: controller.imagePaths,
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
sortOrderSelected: controller.sortOrderType.value,
onSortOrderSelected: controller.updateSortOrder,
));
default:
@@ -255,6 +272,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
nextFocusNode: nextFocusNode,
advancedSearchFilterField: advancedSearchFilterField,
textEditingController: textEditingController,
onTextChange: onTextChange,
);
}
}
@@ -268,6 +286,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
MouseCursor? mouseCursor,
FocusNode? currentFocusNode,
FocusNode? nextFocusNode,
ValueChanged<String>? onTextChange,
}) {
return KeyboardListener(
focusNode: currentFocusNode ?? FocusNode(),
@@ -293,6 +312,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
popBack();
}
},
onTextChange: onTextChange,
decoration: InputDecoration(
filled: true,
fillColor: isSelectFormList ? AppColor.colorItemSelected : Colors.white,
@@ -39,7 +39,7 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
height: 16),
onTap: () {
log('IconOpenAdvancedSearchWidget::build(): clicked');
advancedFilterController.initSearchFilterField();
advancedFilterController.initSearchFilterField(context);
searchController.openAdvanceSearch();
}),
),
@@ -137,7 +137,6 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
}
if (queryString.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) {
_searchController.clearSortOrder();
_searchController.clearSearchFilter();
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
_dashBoardController.searchEmailByQueryString(queryString);
@@ -158,7 +157,6 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
_searchController.searchInputController.text = recent.value;
_searchController.searchFocus.unfocus();
_searchController.enableSearch();
_searchController.clearSortOrder();
_searchController.clearSearchFilter();
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
_dashBoardController.searchEmailByQueryString(recent.value);
@@ -257,6 +255,6 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
_searchController.searchInputController.clear();
_searchController.searchFocus.unfocus();
_searchController.enableSearch();
_dashBoardController.searchEmailByFromFields(emailAddress);
_dashBoardController.quickSearchEmailByFrom(emailAddress);
}
}