TF-2684 Use scrollbar theme replace customize scrollbar
This commit is contained in:
@@ -160,7 +160,6 @@ extension AppColor on Color {
|
|||||||
static const colorBackgroundQuotasWarning = Color(0xFFFFC107);
|
static const colorBackgroundQuotasWarning = Color(0xFFFFC107);
|
||||||
static const colorQuotaWarning = Color(0xFFF05C44);
|
static const colorQuotaWarning = Color(0xFFF05C44);
|
||||||
static const colorQuotaError = Color(0xffE64646);
|
static const colorQuotaError = Color(0xffE64646);
|
||||||
static const colorThumbScrollBar = Color(0xFFAEB7C2);
|
|
||||||
static const colorCreateNewIdentityButton = Color(0xFFEBEDF0);
|
static const colorCreateNewIdentityButton = Color(0xFFEBEDF0);
|
||||||
static const colorSpamReportBannerBackground = Color(0xFFBFDEFF);
|
static const colorSpamReportBannerBackground = Color(0xFFBFDEFF);
|
||||||
static const colorSpamReportBannerStrokeBorder = Color(0x1F000000);
|
static const colorSpamReportBannerStrokeBorder = Color(0x1F000000);
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ class ThemeUtils {
|
|||||||
dividerTheme: _dividerTheme,
|
dividerTheme: _dividerTheme,
|
||||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||||
scrollbarTheme: ScrollbarThemeData(
|
scrollbarTheme: ScrollbarThemeData(
|
||||||
thickness: MaterialStateProperty.all(2.0),
|
thickness: MaterialStateProperty.all(8.0),
|
||||||
radius: const Radius.circular(5.0),
|
radius: const Radius.circular(8.0),
|
||||||
thumbColor: MaterialStateProperty.all(AppColor.colorThumbScrollBar)),
|
thumbColor: MaterialStateProperty.all(AppColor.thumbScrollbarColor)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ class ContactController extends BaseController {
|
|||||||
final searchQuery = SearchQuery.initial().obs;
|
final searchQuery = SearchQuery.initial().obs;
|
||||||
final session = Rxn<Session>();
|
final session = Rxn<Session>();
|
||||||
final listContactSearched = RxList<EmailAddress>();
|
final listContactSearched = RxList<EmailAddress>();
|
||||||
final scrollListViewController = ScrollController();
|
|
||||||
|
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
@@ -85,7 +84,6 @@ class ContactController extends BaseController {
|
|||||||
textInputSearchFocus.dispose();
|
textInputSearchFocus.dispose();
|
||||||
textInputSearchController.dispose();
|
textInputSearchController.dispose();
|
||||||
_deBouncerTime.cancel();
|
_deBouncerTime.cancel();
|
||||||
scrollListViewController.dispose();
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,30 +137,26 @@ class ContactView extends GetWidget<ContactController> {
|
|||||||
return Container(
|
return Container(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 4),
|
padding: const EdgeInsets.symmetric(horizontal: 4),
|
||||||
child: ScrollbarListView(
|
child: ListView.separated(
|
||||||
scrollController: controller.scrollListViewController,
|
itemCount: controller.listContactSearched.length,
|
||||||
child: ListView.separated(
|
separatorBuilder: (context, index) {
|
||||||
itemCount: controller.listContactSearched.length,
|
return Padding(
|
||||||
controller: controller.scrollListViewController,
|
padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
|
||||||
separatorBuilder: (context, index) {
|
child: const Divider(height: 1, color: AppColor.colorDivider),
|
||||||
return Padding(
|
);
|
||||||
padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
|
},
|
||||||
child: const Divider(height: 1, color: AppColor.colorDivider),
|
itemBuilder: (context, index) {
|
||||||
);
|
final emailAddress = controller.listContactSearched[index];
|
||||||
},
|
final suggestionEmailAddress = _toSuggestionEmailAddress(
|
||||||
itemBuilder: (context, index) {
|
emailAddress,
|
||||||
final emailAddress = controller.listContactSearched[index];
|
controller.contactSelected != null ? [controller.contactSelected!] : []
|
||||||
final suggestionEmailAddress = _toSuggestionEmailAddress(
|
);
|
||||||
emailAddress,
|
return ContactSuggestionBoxItem(
|
||||||
controller.contactSelected != null ? [controller.contactSelected!] : []
|
suggestionEmailAddress,
|
||||||
);
|
padding: ContactUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
||||||
return ContactSuggestionBoxItem(
|
selectedContactCallbackAction: (contact) => controller.selectContact(context, contact),
|
||||||
suggestionEmailAddress,
|
);
|
||||||
padding: ContactUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
}
|
||||||
selectedContactCallbackAction: (contact) => controller.selectContact(context, contact),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
PointerDeviceKind.mouse,
|
PointerDeviceKind.mouse,
|
||||||
PointerDeviceKind.trackpad
|
PointerDeviceKind.trackpad
|
||||||
},
|
},
|
||||||
|
scrollbars: false
|
||||||
),
|
),
|
||||||
scrollController: controller.destinationListScrollController,
|
scrollController: controller.destinationListScrollController,
|
||||||
child: RefreshIndicator(
|
child: RefreshIndicator(
|
||||||
@@ -179,6 +180,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
PointerDeviceKind.mouse,
|
PointerDeviceKind.mouse,
|
||||||
PointerDeviceKind.trackpad
|
PointerDeviceKind.trackpad
|
||||||
},
|
},
|
||||||
|
scrollbars: false
|
||||||
),
|
),
|
||||||
scrollController: controller.destinationListScrollController,
|
scrollController: controller.destinationListScrollController,
|
||||||
child: RefreshIndicator(
|
child: RefreshIndicator(
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final _downloadManager = Get.find<DownloadManager>();
|
final _downloadManager = Get.find<DownloadManager>();
|
||||||
final _printUtils = Get.find<PrintUtils>();
|
final _printUtils = Get.find<PrintUtils>();
|
||||||
final _attachmentListScrollController = ScrollController();
|
final _attachmentListScrollController = ScrollController();
|
||||||
final emailContentScrollController = ScrollController();
|
|
||||||
|
|
||||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||||
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
||||||
@@ -190,7 +189,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void onClose() {
|
void onClose() {
|
||||||
_downloadProgressStateController.close();
|
_downloadProgressStateController.close();
|
||||||
_attachmentListScrollController.dispose();
|
_attachmentListScrollController.dispose();
|
||||||
emailContentScrollController.dispose();
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
PointerDeviceKind.mouse,
|
PointerDeviceKind.mouse,
|
||||||
PointerDeviceKind.trackpad
|
PointerDeviceKind.trackpad
|
||||||
},
|
},
|
||||||
|
scrollbars: false
|
||||||
),
|
),
|
||||||
child: RefreshIndicator(
|
child: RefreshIndicator(
|
||||||
color: AppColor.primaryColor,
|
color: AppColor.primaryColor,
|
||||||
@@ -131,7 +132,11 @@ class MailboxView extends BaseMailboxView {
|
|||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
const Divider(color: AppColor.colorDividerMailbox, height: 1),
|
const Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsetsDirectional.symmetric(vertical: 4),
|
padding: EdgeInsetsDirectional.only(
|
||||||
|
top: 4,
|
||||||
|
bottom: 4,
|
||||||
|
start: controller.responsiveUtils.isDesktop(context) ? 0 : 16
|
||||||
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
@@ -249,7 +254,10 @@ class MailboxView extends BaseMailboxView {
|
|||||||
controller.imagePaths,
|
controller.imagePaths,
|
||||||
categories,
|
categories,
|
||||||
controller,
|
controller,
|
||||||
toggleMailboxCategories: controller.toggleMailboxCategories
|
toggleMailboxCategories: controller.toggleMailboxCategories,
|
||||||
|
padding: controller.responsiveUtils.isDesktop(context)
|
||||||
|
? null
|
||||||
|
: const EdgeInsetsDirectional.only(start: 16)
|
||||||
),
|
),
|
||||||
AnimatedContainer(
|
AnimatedContainer(
|
||||||
duration: const Duration(milliseconds: 400),
|
duration: const Duration(milliseconds: 400),
|
||||||
|
|||||||
+1
-6
@@ -43,12 +43,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
Expanded(child: Padding(
|
Expanded(child: Padding(
|
||||||
padding: MailboxVisibilityUtils.getPaddingListView(context, controller.responsiveUtils),
|
padding: MailboxVisibilityUtils.getPaddingListView(context, controller.responsiveUtils),
|
||||||
child: PlatformInfo.isMobile
|
child: _buildListMailbox(context)
|
||||||
? _buildListMailbox(context)
|
|
||||||
: ScrollbarListView(
|
|
||||||
scrollController: controller.mailboxListScrollController,
|
|
||||||
child: _buildListMailbox(context)
|
|
||||||
)
|
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||||
@@ -9,15 +8,8 @@ class SettingsController extends GetxController {
|
|||||||
final manageAccountDashboardController = Get.find<ManageAccountDashBoardController>();
|
final manageAccountDashboardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
final settingScrollController = ScrollController();
|
|
||||||
|
|
||||||
void selectSettings(AccountMenuItem accountMenuItem) => manageAccountDashboardController.selectSettings(accountMenuItem);
|
void selectSettings(AccountMenuItem accountMenuItem) => manageAccountDashboardController.selectSettings(accountMenuItem);
|
||||||
|
|
||||||
void backToUniversalSettings() => manageAccountDashboardController.backToUniversalSettings();
|
void backToUniversalSettings() => manageAccountDashboardController.backToUniversalSettings();
|
||||||
|
|
||||||
@override
|
|
||||||
void onClose() {
|
|
||||||
settingScrollController.dispose();
|
|
||||||
super.onClose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+1
-16
@@ -1,8 +1,6 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
|
||||||
@@ -15,8 +13,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final child = SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
controller: PlatformInfo.isMobile ? null : controller.settingScrollController,
|
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
Obx(() => UserInformationWidget(
|
Obx(() => UserInformationWidget(
|
||||||
userName: controller.manageAccountDashboardController.accountId.value != null
|
userName: controller.manageAccountDashboardController.accountId.value != null
|
||||||
@@ -156,17 +153,5 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (PlatformInfo.isMobile) {
|
|
||||||
return child;
|
|
||||||
} else {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 4),
|
|
||||||
child: ScrollbarListView(
|
|
||||||
scrollController: controller.settingScrollController,
|
|
||||||
child: child
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ 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';
|
||||||
@@ -497,7 +496,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
searchQuery: controller.searchQuery,
|
searchQuery: controller.searchQuery,
|
||||||
isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
|
isShowingEmailContent: controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
|
||||||
isSearchEmailRunning: true,
|
isSearchEmailRunning: true,
|
||||||
padding: SearchEmailUtils.getPaddingItemListMobile(context, controller.responsiveUtils),
|
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
||||||
mailboxContain: currentPresentationEmail.mailboxContain,
|
mailboxContain: currentPresentationEmail.mailboxContain,
|
||||||
emailActionClick: (action, email) {
|
emailActionClick: (action, email) {
|
||||||
controller.pressEmailAction(
|
controller.pressEmailAction(
|
||||||
@@ -533,61 +532,58 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
: ScrollbarListView(
|
: ListView.separated(
|
||||||
scrollController: controller.resultSearchScrollController,
|
controller: controller.resultSearchScrollController,
|
||||||
child: ListView.separated(
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
controller: controller.resultSearchScrollController,
|
key: const PageStorageKey('list_presentation_email_in_search_view'),
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
itemCount: listPresentationEmail.length,
|
||||||
key: const PageStorageKey('list_presentation_email_in_search_view'),
|
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,
|
mailboxContain: currentPresentationEmail.mailboxContain,
|
||||||
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
emailActionClick: (action, email) {
|
||||||
mailboxContain: currentPresentationEmail.mailboxContain,
|
controller.pressEmailAction(
|
||||||
emailActionClick: (action, email) {
|
context,
|
||||||
controller.pressEmailAction(
|
action,
|
||||||
context,
|
email,
|
||||||
action,
|
mailboxContain: currentPresentationEmail.mailboxContain
|
||||||
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)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
));
|
|
||||||
},
|
|
||||||
separatorBuilder: (context, index) {
|
|
||||||
return Padding(
|
|
||||||
padding: ItemEmailTileStyles.getPaddingDividerWeb(context, controller.responsiveUtils),
|
|
||||||
child: Divider(
|
|
||||||
color: index < listPresentationEmail.length - 1 &&
|
|
||||||
controller.selectionMode.value == SelectMode.INACTIVE
|
|
||||||
? null
|
|
||||||
: Colors.white
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
)
|
onMoreActionClick: (email, position) {
|
||||||
)
|
if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
|
controller.openContextMenuAction(
|
||||||
|
context,
|
||||||
|
_contextMenuActionTile(context, email)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
controller.openPopupMenuAction(
|
||||||
|
context,
|
||||||
|
position,
|
||||||
|
_popupMenuActionTile(context, email)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
));
|
||||||
|
},
|
||||||
|
separatorBuilder: (context, index) {
|
||||||
|
return Padding(
|
||||||
|
padding: ItemEmailTileStyles.getPaddingDividerWeb(context, controller.responsiveUtils),
|
||||||
|
child: Divider(
|
||||||
|
color: index < listPresentationEmail.length - 1 &&
|
||||||
|
controller.selectionMode.value == SelectMode.INACTIVE
|
||||||
|
? null
|
||||||
|
: Colors.white
|
||||||
|
)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
final currentSearchQuery = RxString('');
|
final currentSearchQuery = RxString('');
|
||||||
final listMailboxSearched = RxList<PresentationMailbox>();
|
final listMailboxSearched = RxList<PresentationMailbox>();
|
||||||
final textInputSearchController = TextEditingController();
|
final textInputSearchController = TextEditingController();
|
||||||
final scrollbarController = ScrollController();
|
|
||||||
late Debouncer<String> _deBouncerTime;
|
late Debouncer<String> _deBouncerTime;
|
||||||
|
|
||||||
PresentationMailbox? get selectedMailbox => dashboardController.selectedMailbox.value;
|
PresentationMailbox? get selectedMailbox => dashboardController.selectedMailbox.value;
|
||||||
@@ -730,7 +729,6 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
void onClose() {
|
void onClose() {
|
||||||
textInputSearchController.dispose();
|
textInputSearchController.dispose();
|
||||||
_deBouncerTime.cancel();
|
_deBouncerTime.cancel();
|
||||||
scrollbarController.dispose();
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,6 @@ import 'package:get/get.dart';
|
|||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.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/mailbox/domain/state/search_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/search_mailbox_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/context_item_mailbox_action.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/context_item_mailbox_action.dart';
|
||||||
@@ -58,12 +57,7 @@ class SearchMailboxView extends GetWidget<SearchMailboxController>
|
|||||||
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: PlatformInfo.isMobile
|
child: _buildMailboxListView(context)
|
||||||
? _buildMailboxListView(context)
|
|
||||||
: ScrollbarListView(
|
|
||||||
scrollController: controller.scrollbarController,
|
|
||||||
child: _buildMailboxListView(context)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
@@ -179,7 +173,6 @@ class SearchMailboxView extends GetWidget<SearchMailboxController>
|
|||||||
padding: SearchMailboxUtils.getPaddingListViewMailboxSearched(context, controller.responsiveUtils),
|
padding: SearchMailboxUtils.getPaddingListViewMailboxSearched(context, controller.responsiveUtils),
|
||||||
key: const Key('list_mailbox_searched'),
|
key: const Key('list_mailbox_searched'),
|
||||||
itemCount: controller.listMailboxSearched.length,
|
itemCount: controller.listMailboxSearched.length,
|
||||||
controller: controller.scrollbarController,
|
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
primary: false,
|
primary: false,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
|
|||||||
@@ -381,38 +381,35 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
focusNode: controller.focusNodeKeyBoard,
|
focusNode: controller.focusNodeKeyBoard,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
onKey: controller.handleKeyEvent,
|
onKey: controller.handleKeyEvent,
|
||||||
child: ScrollbarListView(
|
child: ListView.separated(
|
||||||
scrollController: controller.listEmailController,
|
key: const PageStorageKey('list_presentation_email_in_threads'),
|
||||||
child: ListView.separated(
|
controller: controller.listEmailController,
|
||||||
key: const PageStorageKey('list_presentation_email_in_threads'),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
controller: controller.listEmailController,
|
itemCount: listPresentationEmail.length + 2,
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
itemBuilder: (context, index) => Obx(() {
|
||||||
itemCount: listPresentationEmail.length + 2,
|
if (index == listPresentationEmail.length) {
|
||||||
itemBuilder: (context, index) => Obx(() {
|
return _buildLoadMoreButton(
|
||||||
if (index == listPresentationEmail.length) {
|
|
||||||
return _buildLoadMoreButton(
|
|
||||||
context,
|
|
||||||
controller.loadingMoreStatus.value);
|
|
||||||
}
|
|
||||||
if (index == listPresentationEmail.length + 1) {
|
|
||||||
return _buildLoadMoreProgressBar(controller.loadingMoreStatus.value);
|
|
||||||
}
|
|
||||||
return _buildEmailItem(
|
|
||||||
context,
|
context,
|
||||||
listPresentationEmail[index]);
|
controller.loadingMoreStatus.value);
|
||||||
}),
|
}
|
||||||
separatorBuilder: (context, index) {
|
if (index == listPresentationEmail.length + 1) {
|
||||||
return Padding(
|
return _buildLoadMoreProgressBar(controller.loadingMoreStatus.value);
|
||||||
padding: ItemEmailTileStyles.getPaddingDividerWeb(context, controller.responsiveUtils),
|
}
|
||||||
child: Divider(
|
return _buildEmailItem(
|
||||||
color: index < listPresentationEmail.length - 1 &&
|
context,
|
||||||
controller.mailboxDashBoardController.currentSelectMode.value == SelectMode.INACTIVE
|
listPresentationEmail[index]);
|
||||||
? null
|
}),
|
||||||
: Colors.white,
|
separatorBuilder: (context, index) {
|
||||||
)
|
return Padding(
|
||||||
);
|
padding: ItemEmailTileStyles.getPaddingDividerWeb(context, controller.responsiveUtils),
|
||||||
},
|
child: Divider(
|
||||||
),
|
color: index < listPresentationEmail.length - 1 &&
|
||||||
|
controller.mailboxDashBoardController.currentSelectMode.value == SelectMode.INACTIVE
|
||||||
|
? null
|
||||||
|
: Colors.white,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user