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;
}
@override
void onDone() {}
@override
void onError(error) {}
@override
void onClose() {
subjectFilterInputController.dispose();
@@ -272,7 +272,6 @@ class MailboxDashBoardController extends ReloadableController {
_closeEmailDetailedView();
}
if (value.isEmpty){
searchController.disableSearch();
searchController.setEmailReceiveTimeType(null);
}
}
@@ -147,7 +147,7 @@ class SearchController extends BaseController {
if (!hasFocus && (query == null || query.isEmpty) && isAdvancedSearchHasApply.isFalse) {
updateFilterEmail(text: SearchQuery.initial());
searchInputController.clear();
cleanSearchFilter();
cleanSearchFilter();
searchFocus.unfocus();
}
});
@@ -36,6 +36,8 @@ class AdvancedSearchFilterFormBottomView
colorButton: Colors.transparent,
colorText: AppColor.colorMessageConfirmDialog,
text: AppLocalizations.of(context).clearFilter,
context: context,
responsiveUtils: _responsiveUtils,
),
const SizedBox(width: 12),
_buildButton(
@@ -46,6 +48,8 @@ class AdvancedSearchFilterFormBottomView
colorButton: AppColor.primaryColor,
colorText: AppColor.primaryLightColor,
text: AppLocalizations.of(context).search,
context: context,
responsiveUtils: _responsiveUtils,
),
],
),
@@ -73,6 +77,8 @@ class AdvancedSearchFilterFormBottomView
required Color colorText,
required String text,
required VoidCallback onAction,
required BuildContext context,
required ResponsiveUtils responsiveUtils,
}) {
return InkWell(
onTap: onAction,
@@ -81,7 +87,8 @@ class AdvancedSearchFilterFormBottomView
},
child: Container(
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,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), color: colorButton),
@@ -866,7 +866,7 @@ class ThreadController extends BaseController {
limit: ThreadConstants.defaultLimit,
sort: _sortOrder,
filter: EmailFilterCondition(
text: searchQuery!.value,
text: searchQuery?.value,
before: emailList.last.receivedAt),
properties: ThreadConstants.propertiesDefault,
lastEmailId: emailList.last.id
@@ -44,94 +44,96 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
backgroundColor: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? AppColor.colorBgDesktop
: Colors.white,
body: Row(children: [
if ((!BuildUtils.isWeb && _responsiveUtils.isDesktop(context) && _responsiveUtils.isTabletLarge(context))
|| (BuildUtils.isWeb && _responsiveUtils.isTabletLarge(context)))
const VerticalDivider(color: AppColor.lineItemListColor, width: 1, thickness: 0.2),
Expanded(child: SafeArea(
right: _responsiveUtils.isLandscapeMobile(context),
left: _responsiveUtils.isLandscapeMobile(context),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if ((!_responsiveUtils.isDesktop(context) && BuildUtils.isWeb) || !BuildUtils.isWeb)
... [
_buildAppBarNormal(context),
Obx(() {
return Stack(children: [
if (!controller.isSearchActive())
Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 16,
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
margin: const EdgeInsets.only(
bottom: !BuildUtils.isWeb ? 16 : 0),
child: _buildSearchFormInActive(context))
else
Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 8,
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
margin: const EdgeInsets.only(
bottom: !BuildUtils.isWeb ? 16 : 0),
child: _buildSearchFormActive(context))
]);
})
]
else
const SizedBox.shrink(),
Obx(() {
if (controller.isMailboxTrash
&& controller.emailList.isNotEmpty
&& !controller.isSearchActive()) {
return _buildEmptyTrashButton(context);
} else {
return const SizedBox.shrink();
}
}),
Obx(() {
if (controller.isSearchActive()
&& controller.searchIsActive.isTrue
&& _responsiveUtils.isDesktop(context)
&& BuildUtils.isWeb) {
return _buildListButtonQuickSearchFilter(context);
} else {
return const SizedBox.shrink();
}
}),
Expanded(child: Container(
alignment: Alignment.center,
margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? const EdgeInsets.only(right: 16, top: 16, bottom: 16)
: EdgeInsets.zero,
decoration: BoxDecoration(
borderRadius: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? BorderRadius.circular(20)
: null,
border: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? Border.all(color: AppColor.colorBorderBodyThread, width: 1)
: null,
color: Colors.white),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(
BuildUtils.isWeb && _responsiveUtils.isDesktop(context) ? 20 : 0)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildLoadingView(),
Expanded(child: _buildListEmail(context)),
_buildLoadingViewLoadMore(),
]
),
)
)),
_buildListButtonSelectionForMobile(context),
]
)
))
]),
body: Portal(
child: Row(children: [
if ((!BuildUtils.isWeb && _responsiveUtils.isDesktop(context) && _responsiveUtils.isTabletLarge(context))
|| (BuildUtils.isWeb && _responsiveUtils.isTabletLarge(context)))
const VerticalDivider(color: AppColor.lineItemListColor, width: 1, thickness: 0.2),
Expanded(child: SafeArea(
right: _responsiveUtils.isLandscapeMobile(context),
left: _responsiveUtils.isLandscapeMobile(context),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if ((!_responsiveUtils.isDesktop(context) && BuildUtils.isWeb) || !BuildUtils.isWeb)
... [
_buildAppBarNormal(context),
Obx(() {
return Stack(children: [
if (!controller.isSearchActive())
Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 16,
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
margin: const EdgeInsets.only(
bottom: !BuildUtils.isWeb ? 16 : 0),
child: _buildSearchFormInActive(context))
else
Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 8,
vertical: BuildUtils.isWeb && !_responsiveUtils.isDesktop(context) ? 8 : 0),
margin: const EdgeInsets.only(
bottom: !BuildUtils.isWeb ? 16 : 0),
child: _buildSearchFormActive(context))
]);
})
]
else
const SizedBox.shrink(),
Obx(() {
if (controller.isMailboxTrash
&& controller.emailList.isNotEmpty
&& !controller.isSearchActive()) {
return _buildEmptyTrashButton(context);
} else {
return const SizedBox.shrink();
}
}),
Obx(() {
if (controller.isSearchActive()
&& controller.searchIsActive.isTrue
&& _responsiveUtils.isDesktop(context)
&& BuildUtils.isWeb) {
return _buildListButtonQuickSearchFilter(context);
} else {
return const SizedBox.shrink();
}
}),
Expanded(child: Container(
alignment: Alignment.center,
margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? const EdgeInsets.only(right: 16, top: 16, bottom: 16)
: EdgeInsets.zero,
decoration: BoxDecoration(
borderRadius: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? BorderRadius.circular(20)
: null,
border: BuildUtils.isWeb && _responsiveUtils.isDesktop(context)
? Border.all(color: AppColor.colorBorderBodyThread, width: 1)
: null,
color: Colors.white),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(
BuildUtils.isWeb && _responsiveUtils.isDesktop(context) ? 20 : 0)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildLoadingView(),
Expanded(child: _buildListEmail(context)),
_buildLoadingViewLoadMore(),
]
),
)
)),
_buildListButtonSelectionForMobile(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.
// 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'
as _i2;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_setters_without_getters
// 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.
// 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'
as _i2;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_setters_without_getters
// ignore_for_file: comment_references