TF-2313 Apply scrollbar for search email view

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 25768a9701666c93d6bec5546b58efc36c413342)
This commit is contained in:
dab246
2023-11-22 17:34:59 +07:00
committed by Dat H. Pham
parent 788109ae96
commit 3addaeb6bd
@@ -10,6 +10,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:model/model.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/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/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/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.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<SearchEmailController>
if (controller.listResultSearch.isNotEmpty) { if (controller.listResultSearch.isNotEmpty) {
return Container( return Container(
color: Colors.white, color: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 4),
child: _buildListEmailBody(context, controller.listResultSearch) child: _buildListEmailBody(context, controller.listResultSearch)
); );
} else { } else {
@@ -480,47 +482,94 @@ class SearchEmailView extends GetWidget<SearchEmailController>
} }
return false; return false;
}, },
child: ListView.builder( child: PlatformInfo.isMobile
controller: controller.resultSearchScrollController, ? ListView.builder(
physics: const AlwaysScrollableScrollPhysics(), controller: controller.resultSearchScrollController,
key: const PageStorageKey('list_presentation_email_in_search_view'), physics: const AlwaysScrollableScrollPhysics(),
itemExtent: _getItemExtent(context), key: const PageStorageKey('list_presentation_email_in_search_view'),
itemCount: listPresentationEmail.length, itemExtent: _getItemExtent(context),
itemBuilder: (context, index) { itemCount: listPresentationEmail.length,
final currentPresentationEmail = listPresentationEmail[index]; itemBuilder: (context, index) {
return Obx(() => EmailTileBuilder( final currentPresentationEmail = listPresentationEmail[index];
presentationEmail: currentPresentationEmail, return Obx(() => EmailTileBuilder(
selectAllMode: controller.selectionMode.value, presentationEmail: currentPresentationEmail,
searchQuery: controller.searchQuery, selectAllMode: controller.selectionMode.value,
isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id, searchQuery: controller.searchQuery,
isSearchEmailRunning: true, isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils), isSearchEmailRunning: true,
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils), padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
mailboxContain: currentPresentationEmail.mailboxContain, paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
emailActionClick: (action, email) { mailboxContain: currentPresentationEmail.mailboxContain,
controller.pressEmailAction( emailActionClick: (action, email) {
context, controller.pressEmailAction(
action,
email,
mailboxContain: currentPresentationEmail.mailboxContain
);
},
onMoreActionClick: (email, position) {
if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
controller.openContextMenuAction(
context, context,
_contextMenuActionTile(context, email) action,
email,
mailboxContain: currentPresentationEmail.mailboxContain
); );
} else { },
controller.openPopupMenuAction( onMoreActionClick: (email, position) {
context, if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
position, controller.openContextMenuAction(
_popupMenuActionTile(context, email) 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)
);
}
},
));
}
)
)
); );
} }