TF-2313 Apply scrollbar for email list view
Signed-off-by: dab246 <tdvu@linagora.com> Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit b9e745f9022758d342cd3eb42e3cf4b6712e58ea)
This commit is contained in:
@@ -635,7 +635,11 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
|
|
||||||
latestEmailSelectedOrUnselected.value = emailsInCurrentMailbox
|
latestEmailSelectedOrUnselected.value = emailsInCurrentMailbox
|
||||||
.firstWhereOrNull((e) => e.id == presentationEmailSelected.id);
|
.firstWhereOrNull((e) => e.id == presentationEmailSelected.id);
|
||||||
focusNodeKeyBoard.requestFocus();
|
|
||||||
|
if (!PlatformInfo.isMobile) {
|
||||||
|
focusNodeKeyBoard.requestFocus();
|
||||||
|
}
|
||||||
|
|
||||||
if (_isUnSelectedAll()) {
|
if (_isUnSelectedAll()) {
|
||||||
mailboxDashBoardController.currentSelectMode.value = SelectMode.INACTIVE;
|
mailboxDashBoardController.currentSelectMode.value = SelectMode.INACTIVE;
|
||||||
mailboxDashBoardController.listEmailSelected.clear();
|
mailboxDashBoardController.listEmailSelected.clear();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ 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/compose_floating_button.dart';
|
import 'package:tmail_ui_user/features/base/widget/compose_floating_button.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/popup_menu_widget_mixin.dart';
|
import 'package:tmail_ui_user/features/base/mixin/popup_menu_widget_mixin.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.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/domain/state/mark_as_mailbox_read_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
|
||||||
@@ -301,11 +302,10 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
Widget _buildListEmail(BuildContext context) {
|
Widget _buildListEmail(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: PlatformInfo.isWeb && controller.responsiveUtils.isDesktop(context)
|
padding: PlatformInfo.isWeb
|
||||||
? const EdgeInsets.symmetric(horizontal: 4)
|
? const EdgeInsets.symmetric(horizontal: 4)
|
||||||
: EdgeInsets.zero,
|
: EdgeInsets.zero,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
child: Obx(() {
|
child: Obx(() {
|
||||||
return Visibility(
|
return Visibility(
|
||||||
@@ -340,7 +340,6 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
&& !controller.loadingMoreStatus.isRunning
|
&& !controller.loadingMoreStatus.isRunning
|
||||||
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
|
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
|
||||||
) {
|
) {
|
||||||
log('ThreadView::_buildListEmailBody(): CALL LOAD MORE');
|
|
||||||
if (controller.isSearchActive() || controller.searchController.advancedSearchIsActivated.isTrue) {
|
if (controller.isSearchActive() || controller.searchController.advancedSearchIsActivated.isTrue) {
|
||||||
controller.searchMoreEmails();
|
controller.searchMoreEmails();
|
||||||
} else {
|
} else {
|
||||||
@@ -349,20 +348,33 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
child: Focus(
|
child: PlatformInfo.isMobile
|
||||||
focusNode: controller.focusNodeKeyBoard,
|
? ListView.builder(
|
||||||
autofocus: PlatformInfo.isWeb,
|
key: const PageStorageKey('list_presentation_email_in_threads'),
|
||||||
onKey: PlatformInfo.isWeb ? controller.handleKeyEvent : null,
|
controller: controller.listEmailController,
|
||||||
child: ListView.builder(
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
controller: controller.listEmailController,
|
padding: EdgeInsets.zero,
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
itemExtent: _getItemExtent(context),
|
||||||
padding: EdgeInsets.zero,
|
itemCount: listPresentationEmail.length,
|
||||||
key: const PageStorageKey('list_presentation_email_in_threads'),
|
itemBuilder: (context, index) => Obx(() => _buildEmailItem(context, listPresentationEmail[index]))
|
||||||
itemExtent: _getItemExtent(context),
|
)
|
||||||
itemCount: listPresentationEmail.length,
|
: Focus(
|
||||||
itemBuilder: (context, index) => Obx(() => _buildEmailItem(context, listPresentationEmail[index]))
|
focusNode: controller.focusNodeKeyBoard,
|
||||||
),
|
autofocus: true,
|
||||||
)
|
onKey: controller.handleKeyEvent,
|
||||||
|
child: ScrollbarListView(
|
||||||
|
scrollController: controller.listEmailController,
|
||||||
|
child: ListView.builder(
|
||||||
|
key: const PageStorageKey('list_presentation_email_in_threads'),
|
||||||
|
controller: controller.listEmailController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
itemExtent: _getItemExtent(context),
|
||||||
|
itemCount: listPresentationEmail.length,
|
||||||
|
itemBuilder: (context, index) => Obx(() => _buildEmailItem(context, listPresentationEmail[index]))
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user