From 3addaeb6bd4bc694476a71c1420f902232544184 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 22 Nov 2023 17:34:59 +0700 Subject: [PATCH] TF-2313 Apply scrollbar for search email view Signed-off-by: dab246 (cherry picked from commit 25768a9701666c93d6bec5546b58efc36c413342) --- .../email/presentation/search_email_view.dart | 127 ++++++++++++------ 1 file changed, 88 insertions(+), 39 deletions(-) diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 011bdba4f..3c1855d13 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -10,6 +10,7 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; +import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart'; @@ -89,6 +90,7 @@ class SearchEmailView extends GetWidget if (controller.listResultSearch.isNotEmpty) { return Container( color: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 4), child: _buildListEmailBody(context, controller.listResultSearch) ); } else { @@ -480,47 +482,94 @@ class SearchEmailView extends GetWidget } return false; }, - child: ListView.builder( - 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]; - return Obx(() => EmailTileBuilder( - presentationEmail: currentPresentationEmail, - selectAllMode: controller.selectionMode.value, - 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), - mailboxContain: currentPresentationEmail.mailboxContain, - emailActionClick: (action, email) { - controller.pressEmailAction( - context, - action, - email, - mailboxContain: currentPresentationEmail.mailboxContain - ); - }, - onMoreActionClick: (email, position) { - if (controller.responsiveUtils.isScreenWithShortestSide(context)) { - controller.openContextMenuAction( + child: PlatformInfo.isMobile + ? ListView.builder( + 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]; + return Obx(() => EmailTileBuilder( + presentationEmail: currentPresentationEmail, + selectAllMode: controller.selectionMode.value, + 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), + mailboxContain: currentPresentationEmail.mailboxContain, + emailActionClick: (action, email) { + controller.pressEmailAction( context, - _contextMenuActionTile(context, email) + action, + email, + mailboxContain: currentPresentationEmail.mailboxContain ); - } else { - controller.openPopupMenuAction( - context, - position, - _popupMenuActionTile(context, email) - ); - } - }, - )); - }) + }, + onMoreActionClick: (email, position) { + if (controller.responsiveUtils.isScreenWithShortestSide(context)) { + controller.openContextMenuAction( + context, + _contextMenuActionTile(context, email) + ); + } else { + controller.openPopupMenuAction( + context, + position, + _popupMenuActionTile(context, email) + ); + } + }, + )); + } + ) + : ScrollbarListView( + scrollController: controller.resultSearchScrollController, + child: ListView.builder( + 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]; + return Obx(() => EmailTileBuilder( + presentationEmail: currentPresentationEmail, + selectAllMode: controller.selectionMode.value, + 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), + mailboxContain: currentPresentationEmail.mailboxContain, + emailActionClick: (action, email) { + controller.pressEmailAction( + context, + action, + email, + mailboxContain: currentPresentationEmail.mailboxContain + ); + }, + onMoreActionClick: (email, position) { + if (controller.responsiveUtils.isScreenWithShortestSide(context)) { + controller.openContextMenuAction( + context, + _contextMenuActionTile(context, email) + ); + } else { + controller.openPopupMenuAction( + context, + position, + _popupMenuActionTile(context, email) + ); + } + }, + )); + } + ) + ) ); }