diff --git a/lib/features/email/presentation/email_controller.dart b/lib/features/email/presentation/email_controller.dart index 8ee8c93f7..f781fa77b 100644 --- a/lib/features/email/presentation/email_controller.dart +++ b/lib/features/email/presentation/email_controller.dart @@ -141,13 +141,18 @@ class EmailController extends BaseController with AppLoaderMixin { @override void onClose() { _downloadProgressStateController.close(); + pageController?.dispose(); _clearWorker(); super.onClose(); } void _setCurrentPositionEmailInListEmail() { - pageController ??= PageController(initialPage: mailboxDashBoardController.emailList.indexOf(mailboxDashBoardController.selectedEmail.value)); currentIndexPageView = mailboxDashBoardController.emailList.indexOf(mailboxDashBoardController.selectedEmail.value); + if(pageController != null && pageController!.page?.toInt() != currentIndexPageView) { + pageController!.jumpToPage(currentIndexPageView); + } else { + pageController = PageController(initialPage: currentIndexPageView); + } _checkEnableNavigatorPageView(); } diff --git a/lib/features/search/presentation/search_email_view.dart b/lib/features/search/presentation/search_email_view.dart index 99c807ef3..1b900b63d 100644 --- a/lib/features/search/presentation/search_email_view.dart +++ b/lib/features/search/presentation/search_email_view.dart @@ -427,6 +427,7 @@ class SearchEmailView extends GetWidget controller.selectionMode.value, SearchStatus.ACTIVE, controller.searchQuery, + controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils), paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils), mailboxCurrent: listPresentationEmail[index].findMailboxContain( diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 6ec7e9cb3..268fe4f66 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -334,7 +334,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, itemExtent: _getItemExtent(context), itemCount: listPresentationEmail.length, itemBuilder: (context, index) { - return Draggable>( + return Obx(() => Draggable>( maxSimultaneousDrags: kIsWeb ? null : 0, data: controller.listEmailDrag, child: (EmailTileBuilder( @@ -343,6 +343,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, controller.mailboxDashBoardController.currentSelectMode.value, controller.searchController.searchState.value.searchStatus, controller.searchQuery, + controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, mailboxCurrent: controller.searchController.isSearchEmailRunning ? listPresentationEmail[index].findMailboxContain(controller.mailboxDashBoardController.mapMailboxById) : controller.currentMailbox, @@ -366,6 +367,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, controller.mailboxDashBoardController.currentSelectMode.value, controller.searchController.searchState.value.searchStatus, controller.searchQuery, + controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, mailboxCurrent: controller.searchController.isSearchEmailRunning ? listPresentationEmail[index].findMailboxContain( controller.mailboxDashBoardController.mapMailboxById) @@ -376,7 +378,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, onDragStarted: () { controller.calculateDragValue(listPresentationEmail[index]); }, - ); + )); }) ); } diff --git a/lib/features/thread/presentation/widgets/email_tile_builder.dart b/lib/features/thread/presentation/widgets/email_tile_builder.dart index 5aa028148..dc026816a 100644 --- a/lib/features/thread/presentation/widgets/email_tile_builder.dart +++ b/lib/features/thread/presentation/widgets/email_tile_builder.dart @@ -18,6 +18,7 @@ class EmailTileBuilder with BaseEmailItemTile { final EdgeInsets? padding; final EdgeInsets? paddingDivider; final bool isDrag; + final bool _isShowingEmailContent; OnPressEmailActionClick? _emailActionClick; @@ -27,6 +28,7 @@ class EmailTileBuilder with BaseEmailItemTile { this._selectModeAll, this._searchStatus, this._searchQuery, + this._isShowingEmailContent, { this.advancedSearchActivated = false, this.mailboxCurrent, @@ -48,6 +50,7 @@ class EmailTileBuilder with BaseEmailItemTile { child: Column( children: [ ListTile( + tileColor: _isShowingEmailContent ? AppColor.colorItemEmailSelectedDesktop : null, contentPadding: padding ?? const EdgeInsets.symmetric(horizontal: 16, vertical: 5), onTap: () => _emailActionClick?.call( EmailActionType.preview, diff --git a/lib/features/thread/presentation/widgets/email_tile_web_builder.dart b/lib/features/thread/presentation/widgets/email_tile_web_builder.dart index c643af354..5389919d1 100644 --- a/lib/features/thread/presentation/widgets/email_tile_web_builder.dart +++ b/lib/features/thread/presentation/widgets/email_tile_web_builder.dart @@ -20,6 +20,7 @@ class EmailTileBuilder with BaseEmailItemTile { final EdgeInsets? padding; final EdgeInsets? paddingDivider; final bool isDrag; + final bool _isShowingEmailContent; OnPressEmailActionClick? _emailActionClick; OnMoreActionClick? _onMoreActionClick; @@ -33,7 +34,8 @@ class EmailTileBuilder with BaseEmailItemTile { this._selectModeAll, this._searchStatus, this._searchQuery, - { + this._isShowingEmailContent, + { this.advancedSearchActivated = false, this.mailboxCurrent, this.padding, @@ -77,7 +79,7 @@ class EmailTileBuilder with BaseEmailItemTile { margin: const EdgeInsets.only(top: 3), padding: const EdgeInsets.symmetric(vertical: 8), decoration: (_selectModeAll == SelectMode.ACTIVE && - _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag + _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag || _isShowingEmailContent ? BoxDecoration( borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop) @@ -89,7 +91,7 @@ class EmailTileBuilder with BaseEmailItemTile { margin: const EdgeInsets.only(top: 3, left: 16, right: 16), padding: const EdgeInsets.only(bottom: 8, right: 8, top: 8), decoration: (_selectModeAll == SelectMode.ACTIVE && - _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag + _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag || _isShowingEmailContent ? BoxDecoration( borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)