alaway show advanced search

This commit is contained in:
ManhNTX
2022-06-29 22:06:22 +07:00
committed by Dat H. Pham
parent 0c3391f76c
commit 0f46a1c899
8 changed files with 102 additions and 102 deletions
@@ -201,12 +201,6 @@ class AdvancedFilterController extends GetxController {
hasAttachment.value = searchEmailFilter.hasAttachment; hasAttachment.value = searchEmailFilter.hasAttachment;
} }
@override
void onDone() {}
@override
void onError(error) {}
@override @override
void onClose() { void onClose() {
subjectFilterInputController.dispose(); subjectFilterInputController.dispose();
@@ -272,7 +272,6 @@ class MailboxDashBoardController extends ReloadableController {
_closeEmailDetailedView(); _closeEmailDetailedView();
} }
if (value.isEmpty){ if (value.isEmpty){
searchController.disableSearch();
searchController.setEmailReceiveTimeType(null); searchController.setEmailReceiveTimeType(null);
} }
} }
@@ -147,7 +147,7 @@ class SearchController extends BaseController {
if (!hasFocus && (query == null || query.isEmpty) && isAdvancedSearchHasApply.isFalse) { if (!hasFocus && (query == null || query.isEmpty) && isAdvancedSearchHasApply.isFalse) {
updateFilterEmail(text: SearchQuery.initial()); updateFilterEmail(text: SearchQuery.initial());
searchInputController.clear(); searchInputController.clear();
cleanSearchFilter(); cleanSearchFilter();
searchFocus.unfocus(); searchFocus.unfocus();
} }
}); });
@@ -36,6 +36,8 @@ class AdvancedSearchFilterFormBottomView
colorButton: Colors.transparent, colorButton: Colors.transparent,
colorText: AppColor.colorMessageConfirmDialog, colorText: AppColor.colorMessageConfirmDialog,
text: AppLocalizations.of(context).clearFilter, text: AppLocalizations.of(context).clearFilter,
context: context,
responsiveUtils: _responsiveUtils,
), ),
const SizedBox(width: 12), const SizedBox(width: 12),
_buildButton( _buildButton(
@@ -46,6 +48,8 @@ class AdvancedSearchFilterFormBottomView
colorButton: AppColor.primaryColor, colorButton: AppColor.primaryColor,
colorText: AppColor.primaryLightColor, colorText: AppColor.primaryLightColor,
text: AppLocalizations.of(context).search, text: AppLocalizations.of(context).search,
context: context,
responsiveUtils: _responsiveUtils,
), ),
], ],
), ),
@@ -73,6 +77,8 @@ class AdvancedSearchFilterFormBottomView
required Color colorText, required Color colorText,
required String text, required String text,
required VoidCallback onAction, required VoidCallback onAction,
required BuildContext context,
required ResponsiveUtils responsiveUtils,
}) { }) {
return InkWell( return InkWell(
onTap: onAction, onTap: onAction,
@@ -81,7 +87,8 @@ class AdvancedSearchFilterFormBottomView
}, },
child: Container( child: Container(
height: 44, height: 44,
constraints: const BoxConstraints(maxWidth: 144), padding: const EdgeInsets.symmetric(horizontal: 26),
constraints: BoxConstraints(maxWidth: responsiveUtils.isMobile(context) ? double.infinity : 144),
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), color: colorButton), borderRadius: BorderRadius.circular(10), color: colorButton),
@@ -866,7 +866,7 @@ class ThreadController extends BaseController {
limit: ThreadConstants.defaultLimit, limit: ThreadConstants.defaultLimit,
sort: _sortOrder, sort: _sortOrder,
filter: EmailFilterCondition( filter: EmailFilterCondition(
text: searchQuery!.value, text: searchQuery?.value,
before: emailList.last.receivedAt), before: emailList.last.receivedAt),
properties: ThreadConstants.propertiesDefault, properties: ThreadConstants.propertiesDefault,
lastEmailId: emailList.last.id lastEmailId: emailList.last.id
@@ -44,94 +44,96 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
backgroundColor: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) backgroundColor: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? AppColor.colorBgDesktop ? AppColor.colorBgDesktop
: Colors.white, : Colors.white,
body: Row(children: [ body: Portal(
if ((!BuildUtils.isWeb && _responsiveUtils.isDesktop(context) && _responsiveUtils.isTabletLarge(context)) child: Row(children: [
|| (BuildUtils.isWeb && _responsiveUtils.isTabletLarge(context))) if ((!BuildUtils.isWeb && _responsiveUtils.isDesktop(context) && _responsiveUtils.isTabletLarge(context))
const VerticalDivider(color: AppColor.lineItemListColor, width: 1, thickness: 0.2), || (BuildUtils.isWeb && _responsiveUtils.isTabletLarge(context)))
Expanded(child: SafeArea( const VerticalDivider(color: AppColor.lineItemListColor, width: 1, thickness: 0.2),
right: _responsiveUtils.isLandscapeMobile(context), Expanded(child: SafeArea(
left: _responsiveUtils.isLandscapeMobile(context), right: _responsiveUtils.isLandscapeMobile(context),
child: Column( left: _responsiveUtils.isLandscapeMobile(context),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
if ((!_responsiveUtils.isDesktop(context) && BuildUtils.isWeb) || !BuildUtils.isWeb) children: [
... [ if ((!_responsiveUtils.isDesktop(context) && BuildUtils.isWeb) || !BuildUtils.isWeb)
_buildAppBarNormal(context), ... [
Obx(() { _buildAppBarNormal(context),
return Stack(children: [ Obx(() {
if (!controller.isSearchActive()) return Stack(children: [
Container( if (!controller.isSearchActive())
color: Colors.white, Container(
padding: EdgeInsets.symmetric( color: Colors.white,
horizontal: 16, padding: EdgeInsets.symmetric(
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0), horizontal: 16,
margin: const EdgeInsets.only( vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
bottom: !BuildUtils.isWeb ? 16 : 0), margin: const EdgeInsets.only(
child: _buildSearchFormInActive(context)) bottom: !BuildUtils.isWeb ? 16 : 0),
else child: _buildSearchFormInActive(context))
Container( else
color: Colors.white, Container(
padding: EdgeInsets.symmetric( color: Colors.white,
horizontal: 8, padding: EdgeInsets.symmetric(
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0), horizontal: 8,
margin: const EdgeInsets.only( vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
bottom: !BuildUtils.isWeb ? 16 : 0), margin: const EdgeInsets.only(
child: _buildSearchFormActive(context)) bottom: !BuildUtils.isWeb ? 16 : 0),
]); child: _buildSearchFormActive(context))
}) ]);
] })
else ]
const SizedBox.shrink(), else
Obx(() { const SizedBox.shrink(),
if (controller.isMailboxTrash Obx(() {
&& controller.emailList.isNotEmpty if (controller.isMailboxTrash
&& !controller.isSearchActive()) { && controller.emailList.isNotEmpty
return _buildEmptyTrashButton(context); && !controller.isSearchActive()) {
} else { return _buildEmptyTrashButton(context);
return const SizedBox.shrink(); } else {
} return const SizedBox.shrink();
}), }
Obx(() { }),
if (controller.isSearchActive() Obx(() {
&& controller.searchIsActive.isTrue if (controller.isSearchActive()
&& _responsiveUtils.isDesktop(context) && controller.searchIsActive.isTrue
&& BuildUtils.isWeb) { && _responsiveUtils.isDesktop(context)
return _buildListButtonQuickSearchFilter(context); && BuildUtils.isWeb) {
} else { return _buildListButtonQuickSearchFilter(context);
return const SizedBox.shrink(); } else {
} return const SizedBox.shrink();
}), }
Expanded(child: Container( }),
alignment: Alignment.center, Expanded(child: Container(
margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) alignment: Alignment.center,
? const EdgeInsets.only(right: 16, top: 16, bottom: 16) margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
: EdgeInsets.zero, ? const EdgeInsets.only(right: 16, top: 16, bottom: 16)
decoration: BoxDecoration( : EdgeInsets.zero,
borderRadius: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) decoration: BoxDecoration(
? BorderRadius.circular(20) borderRadius: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
: null, ? BorderRadius.circular(20)
border: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) : null,
? Border.all(color: AppColor.colorBorderBodyThread, width: 1) border: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
: null, ? Border.all(color: AppColor.colorBorderBodyThread, width: 1)
color: Colors.white), : null,
child: ClipRRect( color: Colors.white),
borderRadius: BorderRadius.all(Radius.circular( child: ClipRRect(
BuildUtils.isWeb && _responsiveUtils.isDesktop(context) ? 20 : 0)), borderRadius: BorderRadius.all(Radius.circular(
child: Column( BuildUtils.isWeb && _responsiveUtils.isDesktop(context) ? 20 : 0)),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
_buildLoadingView(), children: [
Expanded(child: _buildListEmail(context)), _buildLoadingView(),
_buildLoadingViewLoadMore(), Expanded(child: _buildListEmail(context)),
] _buildLoadingViewLoadMore(),
), ]
) ),
)), )
_buildListButtonSelectionForMobile(context), )),
] _buildListButtonSelectionForMobile(context),
) ]
)) )
]), ))
]),
),
floatingActionButton: _buildFloatingButtonCompose(context), floatingActionButton: _buildFloatingButtonCompose(context),
), ),
); );
@@ -1,4 +1,4 @@
// Mocks generated by Mockito 5.2.0 from annotations // Mocks generated by Mockito 5.0.17 from annotations
// in tmail_ui_user/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.dart. // in tmail_ui_user/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.dart.
// Do not manually edit this file. // Do not manually edit this file.
@@ -24,7 +24,6 @@ import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dar
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
as _i2; as _i2;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_setters_without_getters // ignore_for_file: avoid_setters_without_getters
// ignore_for_file: comment_references // ignore_for_file: comment_references
@@ -1,4 +1,4 @@
// Mocks generated by Mockito 5.2.0 from annotations // Mocks generated by Mockito 5.0.17 from annotations
// in tmail_ui_user/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart. // in tmail_ui_user/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart.
// Do not manually edit this file. // Do not manually edit this file.
@@ -24,7 +24,6 @@ import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dar
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
as _i2; as _i2;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_setters_without_getters // ignore_for_file: avoid_setters_without_getters
// ignore_for_file: comment_references // ignore_for_file: comment_references