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:
@@ -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<SearchEmailController>
|
||||
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<SearchEmailController>
|
||||
}
|
||||
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)
|
||||
);
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user