Fix padding item email in Thread and Search

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 377085ba9054c6eb4c8e3d8388821473b3335962)
This commit is contained in:
dab246
2023-12-06 01:28:03 +07:00
committed by Dat H. Pham
parent affc1a4ee7
commit f18c4ef122
16 changed files with 647 additions and 599 deletions
@@ -29,6 +29,7 @@ import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_s
import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_sort_by_cupertino_action_sheet_action_builder.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/empty_emails_widget.dart';
@@ -483,11 +484,10 @@ class SearchEmailView extends GetWidget<SearchEmailController>
return false;
},
child: PlatformInfo.isMobile
? ListView.builder(
? ListView.separated(
controller: controller.resultSearchScrollController,
physics: const AlwaysScrollableScrollPhysics(),
key: const PageStorageKey('list_presentation_email_in_search_view'),
itemExtent: _getItemExtent(context),
itemCount: listPresentationEmail.length,
itemBuilder: (context, index) {
final currentPresentationEmail = listPresentationEmail[index];
@@ -497,8 +497,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
searchQuery: controller.searchQuery,
isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
isSearchEmailRunning: true,
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
padding: SearchEmailUtils.getPaddingItemListMobile(context, controller.responsiveUtils),
mailboxContain: currentPresentationEmail.mailboxContain,
emailActionClick: (action, email) {
controller.pressEmailAction(
@@ -523,15 +522,23 @@ class SearchEmailView extends GetWidget<SearchEmailController>
}
},
));
}
},
separatorBuilder: (BuildContext context, int index) {
if (index < listPresentationEmail.length - 1) {
return Padding(
padding: SearchEmailUtils.getPaddingItemListMobile(context, controller.responsiveUtils),
child: const Divider(color: AppColor.lineItemListColor, height: 1));
} else {
return const SizedBox.shrink();
}
},
)
: ScrollbarListView(
scrollController: controller.resultSearchScrollController,
child: ListView.builder(
child: ListView.separated(
controller: controller.resultSearchScrollController,
physics: const AlwaysScrollableScrollPhysics(),
key: const PageStorageKey('list_presentation_email_in_search_view'),
itemExtent: _getItemExtent(context),
itemCount: listPresentationEmail.length,
itemBuilder: (context, index) {
final currentPresentationEmail = listPresentationEmail[index];
@@ -542,7 +549,6 @@ class SearchEmailView extends GetWidget<SearchEmailController>
isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
isSearchEmailRunning: true,
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
mailboxContain: currentPresentationEmail.mailboxContain,
emailActionClick: (action, email) {
controller.pressEmailAction(
@@ -566,21 +572,26 @@ class SearchEmailView extends GetWidget<SearchEmailController>
);
}
},
));
}
},
separatorBuilder: (context, index) {
return Padding(
padding: ItemEmailTileStyles.getPaddingDividerWeb(context, controller.responsiveUtils),
child: Divider(
color: index < listPresentationEmail.length - 1 &&
controller.selectionMode.value == SelectMode.INACTIVE
? AppColor.lineItemListColor
: Colors.white,
height: 1
)
);
},
)
)
);
}
double? _getItemExtent(BuildContext context) {
if (PlatformInfo.isWeb) {
return controller.responsiveUtils.isDesktop(context) ? 52 : 95;
} else {
return null;
}
}
Widget _buildLoadingView() {
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),
@@ -6,10 +6,14 @@ import 'package:flutter/material.dart';
class SearchEmailUtils {
static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) {
if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16);
if (responsiveUtils.isMobile(context)) {
return const EdgeInsets.symmetric(horizontal: 16);
} else {
return const EdgeInsets.symmetric(horizontal: 32);
}
} else {
if (responsiveUtils.isScreenWithShortestSide(context)) {
return const EdgeInsets.symmetric(horizontal: 10);
if (responsiveUtils.isPortraitMobile(context)) {
return const EdgeInsets.symmetric(horizontal: 8);
} else {
return const EdgeInsets.symmetric(horizontal: 32);
}
@@ -49,31 +53,35 @@ class SearchEmailUtils {
}
static EdgeInsets getPaddingSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) {
if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) {
return const EdgeInsets.all(12);
} else {
if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(vertical: 12, horizontal: 16);
} else {
if (responsiveUtils.isPortraitMobile(context)) {
return const EdgeInsets.symmetric(vertical: 12, horizontal: 16);
} else {
return const EdgeInsets.symmetric(vertical: 12, horizontal: 32);
}
}
}
static EdgeInsets getPaddingItemListMobile(BuildContext context, ResponsiveUtils responsiveUtils) {
if (responsiveUtils.isPortraitMobile(context)) {
return const EdgeInsets.symmetric(horizontal: 16);
} else {
return const EdgeInsets.symmetric(horizontal: 32);
}
}
static EdgeInsets getMarginSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) {
if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) {
if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 20);
} else {
return EdgeInsets.zero;
}
}
static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
if (PlatformInfo.isWeb) {
return const EdgeInsets.only(left: 10);
} else {
if (responsiveUtils.isScreenWithShortestSide(context)) {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 5);
} else {
return const EdgeInsets.symmetric(horizontal: 32, vertical: 5);
}
}
static EdgeInsetsGeometry getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
return const EdgeInsetsDirectional.only(top: 8, bottom: 8, end: 8);
}
static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {