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