TF-2684 Use scrollbar theme replace customize scrollbar

This commit is contained in:
dab246
2024-03-13 01:08:24 +07:00
committed by Dat H. Pham
parent dbf1f2d530
commit 8ddb4b9275
14 changed files with 117 additions and 160 deletions
@@ -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);
+3 -3
View File
@@ -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,11 +137,8 @@ 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(
scrollController: controller.scrollListViewController,
child: ListView.separated( child: ListView.separated(
itemCount: controller.listContactSearched.length, itemCount: controller.listContactSearched.length,
controller: controller.scrollListViewController,
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Padding( return Padding(
padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils), padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
@@ -160,7 +157,6 @@ class ContactView extends GetWidget<ContactController> {
selectedContactCallbackAction: (contact) => controller.selectContact(context, contact), 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),
@@ -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
? _buildListMailbox(context)
: ScrollbarListView(
scrollController: controller.mailboxListScrollController,
child: _buildListMailbox(context) 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,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,9 +532,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
} }
}, },
) )
: ScrollbarListView( : ListView.separated(
scrollController: controller.resultSearchScrollController,
child: ListView.separated(
controller: controller.resultSearchScrollController, controller: controller.resultSearchScrollController,
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),
key: const PageStorageKey('list_presentation_email_in_search_view'), key: const PageStorageKey('list_presentation_email_in_search_view'),
@@ -587,7 +584,6 @@ class SearchEmailView extends GetWidget<SearchEmailController>
); );
}, },
) )
)
); );
} }
@@ -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,13 +57,8 @@ 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
? _buildMailboxListView(context)
: ScrollbarListView(
scrollController: controller.scrollbarController,
child: _buildMailboxListView(context) 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,8 +381,6 @@ class ThreadView extends GetWidget<ThreadController>
focusNode: controller.focusNodeKeyBoard, focusNode: controller.focusNodeKeyBoard,
autofocus: true, autofocus: true,
onKey: controller.handleKeyEvent, onKey: controller.handleKeyEvent,
child: ScrollbarListView(
scrollController: controller.listEmailController,
child: ListView.separated( child: ListView.separated(
key: const PageStorageKey('list_presentation_email_in_threads'), key: const PageStorageKey('list_presentation_email_in_threads'),
controller: controller.listEmailController, controller: controller.listEmailController,
@@ -413,7 +411,6 @@ class ThreadView extends GetWidget<ThreadController>
); );
}, },
), ),
),
) )
); );
} }