From 4088c8864920e9b5e332ba75f3bd036a60be28b8 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 4 May 2022 11:15:37 +0700 Subject: [PATCH] TF-528 Apply linter for some widget --- .../base/base_mailbox_controller.dart | 4 +- lib/features/base/mixin/app_loader_mixin.dart | 2 +- .../mixin/message_dialog_action_mixin.dart | 18 ++++---- .../base/mixin/network_connection_mixin.dart | 6 +-- .../caching/config/hive_cache_config.dart | 4 +- .../presentation/destination_picker_view.dart | 44 ++++++++++--------- .../app_bar_destination_picker_builder.dart | 16 +++---- .../email/data/network/email_api.dart | 6 +-- .../repository/email_repository_impl.dart | 8 ++-- .../email/presentation/email_controller.dart | 15 +++---- .../widgets/attachment_file_tile_builder.dart | 12 ++--- ...tachments_place_holder_loading_widget.dart | 18 ++++---- .../bottom_bar_mail_widget_builder.dart | 14 +++--- ...cupertino_action_sheet_action_builder.dart | 2 +- .../email_address_bottom_sheet_builder.dart | 30 ++++++------- .../widgets/email_address_dialog_builder.dart | 32 +++++++------- ...l_content_place_holder_loading_widget.dart | 18 ++++---- .../home/presentation/home_bindings.dart | 5 --- lib/features/home/presentation/home_view.dart | 3 +- .../exceptions/authentication_exception.dart | 6 +-- .../login/presentation/login_bindings.dart | 5 --- .../login/presentation/login_view.dart | 40 +++++++++-------- .../login_input_decoration_builder.dart | 12 ++--- .../exceptions/verify_name_exception.dart | 14 +++--- .../duplicate_name_validator.dart | 2 +- .../verification/empty_name_validator.dart | 2 +- .../special_character_validator.dart | 2 +- .../mailbox_creator_bindings.dart | 5 --- .../mailbox_creator_controller.dart | 6 --- .../presentation/mailbox_creator_view.dart | 20 ++++----- .../app_bar_mailbox_creator_builder.dart | 14 +++--- ...mailbox_name_input_decoration_builder.dart | 16 +++---- .../mixin/filter_email_popup_menu_mixin.dart | 12 ++--- .../presentation/session_page_bindings.dart | 5 --- .../session/presentation/session_view.dart | 3 +- 35 files changed, 198 insertions(+), 223 deletions(-) diff --git a/lib/features/base/base_mailbox_controller.dart b/lib/features/base/base_mailbox_controller.dart index fe31c7f9d..12701d5ba 100644 --- a/lib/features/base/base_mailbox_controller.dart +++ b/lib/features/base/base_mailbox_controller.dart @@ -20,14 +20,14 @@ abstract class BaseMailboxController extends BaseController { List allMailboxes = []; Future buildTree(List allMailbox) async { - this.allMailboxes = allMailbox; + allMailboxes = allMailbox; final tupleTree = await _treeBuilder.generateMailboxTreeInUI(allMailbox); defaultMailboxTree.value = tupleTree.value1; folderMailboxTree.value = tupleTree.value2; } Future refreshTree(List allMailbox) async { - this.allMailboxes = allMailbox; + allMailboxes = allMailbox; final tupleTree = await _treeBuilder.generateMailboxTreeInUIAfterRefreshChanges( allMailbox, defaultMailboxTree.value, folderMailboxTree.value); defaultMailboxTree.firstRebuild = true; diff --git a/lib/features/base/mixin/app_loader_mixin.dart b/lib/features/base/mixin/app_loader_mixin.dart index f2b99fa36..4a9dd3bf7 100644 --- a/lib/features/base/mixin/app_loader_mixin.dart +++ b/lib/features/base/mixin/app_loader_mixin.dart @@ -5,7 +5,7 @@ import 'package:flutter/cupertino.dart'; mixin AppLoaderMixin { Widget get loadingWidget { - return Center(child: SizedBox( + return const Center(child: SizedBox( width: 24, height: 24, child: CupertinoActivityIndicator(color: AppColor.colorLoading))); diff --git a/lib/features/base/mixin/message_dialog_action_mixin.dart b/lib/features/base/mixin/message_dialog_action_mixin.dart index 0475dfda0..bc3063fa6 100644 --- a/lib/features/base/mixin/message_dialog_action_mixin.dart +++ b/lib/features/base/mixin/message_dialog_action_mixin.dart @@ -21,7 +21,7 @@ mixin MessageDialogActionMixin { if (_responsiveUtils.isMobile(context)) { (ConfirmationDialogActionSheetBuilder(context) ..messageText(message) - ..styleConfirmButton(TextStyle(fontSize: 20, fontWeight: FontWeight.normal, color: Colors.black)) + ..styleConfirmButton(const TextStyle(fontSize: 20, fontWeight: FontWeight.normal, color: Colors.black)) ..onCancelAction(AppLocalizations.of(context).cancel, () => popBack()) ..onConfirmAction(actionName, () { popBack(); @@ -32,20 +32,20 @@ mixin MessageDialogActionMixin { context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths) - ..key(Key('confirm_dialog_action')) + ..key(const Key('confirm_dialog_action')) ..title(title ?? '') ..content(message) ..addIcon(icon) ..colorConfirmButton(AppColor.colorTextButton) ..colorCancelButton(AppColor.colorCancelButton) - ..paddingTitle(icon != null ? EdgeInsets.only(top: 34) : EdgeInsets.zero) + ..paddingTitle(icon != null ? const EdgeInsets.only(top: 34) : EdgeInsets.zero) ..marginIcon(EdgeInsets.zero) - ..paddingContent(EdgeInsets.only(left: 44, right: 44, bottom: 24, top: 8)) - ..paddingButton(hasCancelButton ? null : EdgeInsets.only(bottom: 16, left: 44, right: 44)) - ..styleTitle(TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.black)) - ..styleContent(TextStyle(fontSize: 14, fontWeight: FontWeight.normal, color: AppColor.colorContentEmail)) - ..styleTextCancelButton(TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorTextButton)) - ..styleTextConfirmButton(TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: Colors.white)) + ..paddingContent(const EdgeInsets.only(left: 44, right: 44, bottom: 24, top: 8)) + ..paddingButton(hasCancelButton ? null : const EdgeInsets.only(bottom: 16, left: 44, right: 44)) + ..styleTitle(const TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.black)) + ..styleContent(const TextStyle(fontSize: 14, fontWeight: FontWeight.normal, color: AppColor.colorContentEmail)) + ..styleTextCancelButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorTextButton)) + ..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: Colors.white)) ..onConfirmButtonAction(actionName, () { popBack(); onConfirmAction.call(); diff --git a/lib/features/base/mixin/network_connection_mixin.dart b/lib/features/base/mixin/network_connection_mixin.dart index 09441068a..0bd89b336 100644 --- a/lib/features/base/mixin/network_connection_mixin.dart +++ b/lib/features/base/mixin/network_connection_mixin.dart @@ -15,17 +15,17 @@ mixin NetworkConnectionMixin { color: Colors.white, borderRadius: BorderRadius.circular(16)), width: 320, - margin: EdgeInsets.only(bottom: 100), + margin: const EdgeInsets.only(bottom: 100), child: Material( elevation: 8, - shape: RoundedRectangleBorder( + shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(16.0)), ), child: ListTile( leading: SvgPicture.asset(_imagePaths.icNotConnection), title: Text( AppLocalizations.of(context).no_internet_connection, - style: TextStyle(fontSize: 15, color: Colors.black)), + style: const TextStyle(fontSize: 15, color: Colors.black)), ) ) ); diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index 35ec7560d..833aaf32f 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; -import 'package:path_provider/path_provider.dart' as pathProvider; +import 'package:path_provider/path_provider.dart' as path_provider; import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_cache.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_rights_cache.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/state_cache.dart'; @@ -22,7 +22,7 @@ class HiveCacheConfig { Hive.init(databasePath); } else { if (!GetPlatform.isWeb) { - Directory directory = await pathProvider.getApplicationDocumentsDirectory(); + Directory directory = await path_provider.getApplicationDocumentsDirectory(); Hive.init(directory.path); } } diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index 08e2178f0..3d374b686 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -22,6 +22,8 @@ class DestinationPickerView extends GetWidget { final _imagePaths = Get.find(); final _responsiveUtils = Get.find(); + DestinationPickerView({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { MailboxActions? actions; @@ -157,15 +159,15 @@ class DestinationPickerView extends GetWidget { Widget _buildLoadingView() { return Obx(() => controller.viewState.value.fold( - (failure) => SizedBox.shrink(), + (failure) => const SizedBox.shrink(), (success) => success is LoadingState - ? Center(child: Padding( + ? const Center(child: Padding( padding: EdgeInsets.only(top: 16), child: SizedBox( width: 24, height: 24, child: CircularProgressIndicator(color: AppColor.primaryColor)))) - : SizedBox.shrink())); + : const SizedBox.shrink())); } Widget _buildListMailbox(BuildContext context, MailboxActions? actions) { @@ -178,18 +180,18 @@ class DestinationPickerView extends GetWidget { if (actions == MailboxActions.create && !BuildUtils.isWeb && _responsiveUtils.isScreenWithShortestSide(context)) const SizedBox(height: 12), if (actions == MailboxActions.create) _buildUnifiedMailbox(context), - SizedBox(height: 12), + const SizedBox(height: 12), Obx(() => controller.defaultMailboxTree.value.root.childrenItems?.isNotEmpty ?? false ? _buildMailboxCategory(context, MailboxCategories.exchange, controller.defaultMailboxTree.value.root, actions) - : SizedBox.shrink()), - if (actions == MailboxActions.create) SizedBox(height: 12), + : const SizedBox.shrink()), + if (actions == MailboxActions.create) const SizedBox(height: 12), if (actions != MailboxActions.create && !kIsWeb) - Padding( + const Padding( padding: EdgeInsets.only(left: 60), child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)), Obx(() => controller.folderMailboxTree.value.root.childrenItems?.isNotEmpty ?? false ? _buildMailboxCategory(context, MailboxCategories.folders, controller.folderMailboxTree.value.root, actions) - : SizedBox.shrink()), + : const SizedBox.shrink()), ] ); } @@ -201,10 +203,10 @@ class DestinationPickerView extends GetWidget { return Column(children: [ _buildHeaderMailboxCategory(context, categories), AnimatedContainer( - duration: Duration(milliseconds: 400), + duration: const Duration(milliseconds: 400), child: categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND ? _buildBodyMailboxCategory(context, categories, mailboxNode, actions) - : Offstage()) + : const Offstage()) ]); } @@ -217,7 +219,7 @@ class DestinationPickerView extends GetWidget { Expanded(child: Text(categories.getTitle(context), maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 20, color: Colors.black, fontWeight: FontWeight.bold))), + style: const TextStyle(fontSize: 20, color: Colors.black, fontWeight: FontWeight.bold))), buildIconWeb( icon: SvgPicture.asset( categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND @@ -248,7 +250,7 @@ class DestinationPickerView extends GetWidget { ?.map((mailboxNode) => mailboxNode.hasChildren() ? TreeViewChild( context, - key: Key('children_tree_mailbox_child'), + key: const Key('children_tree_mailbox_child'), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, parent: (MailBoxFolderTileBuilder(context, _imagePaths, mailboxNode, lastNode: lastNode, @@ -268,14 +270,14 @@ class DestinationPickerView extends GetWidget { Widget _buildListMailboxSearched(BuildContext context) { return Obx(() => Container( margin: _responsiveUtils.isDesktop(context) - ? EdgeInsets.only(left: 16, right: 16) + ? const EdgeInsets.only(left: 16, right: 16) : EdgeInsets.zero, decoration: _responsiveUtils.isDesktop(context) ? BoxDecoration(borderRadius: BorderRadius.circular(14), color: Colors.white) : null, child: ListView.builder( - padding: EdgeInsets.only(left: 16, right: 8), - key: Key('list_mailbox_searched'), + padding: const EdgeInsets.only(left: 16, right: 8), + key: const Key('list_mailbox_searched'), itemCount: controller.listMailboxSearched.length, shrinkWrap: true, primary: false, @@ -299,12 +301,12 @@ class DestinationPickerView extends GetWidget { right: 16), decoration: BoxDecoration(borderRadius: BorderRadius.circular(14), color: Colors.white), child: MediaQuery( - data: MediaQueryData(padding: EdgeInsets.zero), + data: const MediaQueryData(padding: EdgeInsets.zero), child: ListTile( contentPadding: EdgeInsets.zero, onTap: () => controller.selectMailboxAction(null), leading: Padding( - padding: EdgeInsets.only(left: 16), + padding: const EdgeInsets.only(left: 16), child: SvgPicture.asset(_imagePaths.icFolderMailbox, width: 28, height: 28, fit: BoxFit.fill)), title: Transform( transform: Matrix4.translationValues(-5.0, 0.0, 0.0), @@ -314,7 +316,7 @@ class DestinationPickerView extends GetWidget { AppLocalizations.of(context).default_mailbox, maxLines: 1, overflow:TextOverflow.ellipsis, - style: TextStyle(fontSize: 15, color: AppColor.colorNameEmail), + style: const TextStyle(fontSize: 15, color: AppColor.colorNameEmail), )) ] ) @@ -339,10 +341,10 @@ class DestinationPickerView extends GetWidget { Widget _buildInputSearchFormWidget(BuildContext context) { return Padding( - padding: EdgeInsets.only(top: 16, bottom: 16), + padding: const EdgeInsets.only(top: 16, bottom: 16), child: Row( children: [ - Padding(padding: EdgeInsets.only(left: 5), child: buildIconWeb( + Padding(padding: const EdgeInsets.only(left: 5), child: buildIconWeb( icon: SvgPicture.asset(_imagePaths.icBack, color: AppColor.colorTextButton, fit: BoxFit.fill), onTap: () => controller.disableSearch(context))), Expanded(child: (SearchAppBarWidget(context, _imagePaths, _responsiveUtils, @@ -352,7 +354,7 @@ class DestinationPickerView extends GetWidget { hasBackButton: false, hasSearchButton: true) ..addPadding(EdgeInsets.zero) - ..setMargin(EdgeInsets.only(right: 16)) + ..setMargin(const EdgeInsets.only(right: 16)) ..addDecoration(BoxDecoration(borderRadius: BorderRadius.circular(12), color: AppColor.colorBgSearchBar)) ..addIconClearText(SvgPicture.asset(_imagePaths.icClearTextSearch, width: 18, height: 18, fit: BoxFit.fill)) ..setHintText(AppLocalizations.of(context).hint_search_mailboxes) diff --git a/lib/features/destination_picker/presentation/widgets/app_bar_destination_picker_builder.dart b/lib/features/destination_picker/presentation/widgets/app_bar_destination_picker_builder.dart index 46636d1a4..32740b648 100644 --- a/lib/features/destination_picker/presentation/widgets/app_bar_destination_picker_builder.dart +++ b/lib/features/destination_picker/presentation/widgets/app_bar_destination_picker_builder.dart @@ -26,14 +26,14 @@ class AppBarDestinationPickerBuilder { Widget build() { return Container( - key: Key('app_bar_destination_picker'), + key: const Key('app_bar_destination_picker'), alignment: Alignment.center, - decoration: BoxDecoration( + decoration: const BoxDecoration( borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)), color: Colors.white), height: 52, child: MediaQuery( - data: MediaQueryData(padding: EdgeInsets.zero), + data: const MediaQueryData(padding: EdgeInsets.zero), child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -49,19 +49,19 @@ class AppBarDestinationPickerBuilder { Widget _buildCancelButton() { if (_mailboxAction == MailboxActions.moveEmail) { return Padding( - padding: EdgeInsets.only(right: 12), + padding: const EdgeInsets.only(right: 12), child: Material( borderRadius: BorderRadius.circular(20), color: Colors.transparent, child: TextButton( child: Text( AppLocalizations.of(_context).cancel, - style: TextStyle(fontSize: 17, color: AppColor.colorTextButton)), + style: const TextStyle(fontSize: 17, color: AppColor.colorTextButton)), onPressed: () => _onCloseActionClick?.call() ) )); } else { - return SizedBox(width: 40, height: 40); + return const SizedBox(width: 40, height: 40); } } @@ -71,7 +71,7 @@ class AppBarDestinationPickerBuilder { icon: SvgPicture.asset(_imagePaths.icBack, color: AppColor.colorTextButton, fit: BoxFit.fill), onTap: () => _onCloseActionClick?.call()); } else { - return SizedBox(width: 100, height: 40); + return const SizedBox(width: 100, height: 40); } } @@ -81,6 +81,6 @@ class AppBarDestinationPickerBuilder { maxLines: 1, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, - style: TextStyle(fontSize: 20, color: AppColor.colorNameEmail, fontWeight: FontWeight.w700)); + style: const TextStyle(fontSize: 20, color: AppColor.colorNameEmail, fontWeight: FontWeight.w700)); } } \ No newline at end of file diff --git a/lib/features/email/data/network/email_api.dart b/lib/features/email/data/network/email_api.dart index 6931723bf..9fd849b7e 100644 --- a/lib/features/email/data/network/email_api.dart +++ b/lib/features/email/data/network/email_api.dart @@ -70,7 +70,7 @@ class EmailAPI { if (emailRequest.emailIdDestroyed != null) { setEmailMethod - ..addDestroy({emailRequest.emailIdDestroyed!.id}); + .addDestroy({emailRequest.emailIdDestroyed!.id}); } final setEmailSubmissionMethod = SetEmailSubmissionMethod(accountId) @@ -160,7 +160,7 @@ class EmailAPI { String baseDownloadUrl, AccountRequest accountRequest ) async { - var externalStorageDirPath; + String externalStorageDirPath; if (Platform.isAndroid) { externalStorageDirPath = await ExternalPath.getExternalStoragePublicDirectory(ExternalPath.DIRECTORY_DOWNLOADS); } else if (Platform.isIOS) { @@ -381,7 +381,7 @@ class EmailAPI { Future deleteEmailPermanently(AccountId accountId, EmailId emailId) async { final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); final setEmailMethod = SetEmailMethod(accountId) - ..addDestroy(Set.of([emailId.id])); + ..addDestroy({emailId.id}); final setEmailInvocation = requestBuilder.invocation(setEmailMethod); diff --git a/lib/features/email/data/repository/email_repository_impl.dart b/lib/features/email/data/repository/email_repository_impl.dart index 58ac28169..c30637b67 100644 --- a/lib/features/email/data/repository/email_repository_impl.dart +++ b/lib/features/email/data/repository/email_repository_impl.dart @@ -78,10 +78,10 @@ class EmailRepositoryImpl extends EmailRepository { String? baseUrlDownload, AccountId accountId ) async { - final mapUrlDownloadCID = Map.fromIterable( - attachmentInlines, - key: (attachment) => attachment.cid!, - value: (attachment) => attachment.getDownloadUrl(baseUrlDownload, accountId)); + final mapUrlDownloadCID = { + for (var attachment in attachmentInlines) + attachment.cid! : attachment.getDownloadUrl(baseUrlDownload!, accountId) + }; return await Future.wait(emailContents .map((emailContent) async { return await _htmlDataSource.transformEmailContent(emailContent, mapUrlDownloadCID); diff --git a/lib/features/email/presentation/email_controller.dart b/lib/features/email/presentation/email_controller.dart index 8dda33df4..4d19ebd4a 100644 --- a/lib/features/email/presentation/email_controller.dart +++ b/lib/features/email/presentation/email_controller.dart @@ -115,11 +115,6 @@ class EmailController extends BaseController { } } - @override - void onData(Either newState) { - super.onData(newState); - } - @override void onDone() { viewState.value.fold( @@ -271,7 +266,7 @@ class EmailController extends BaseController { context: context, builder: (_) => PointerInterceptor(child: (DownloadingFileDialogBuilder() - ..key(Key('downloading_file_dialog')) + ..key(const Key('downloading_file_dialog')) ..title(AppLocalizations.of(context).preparing_to_export) ..content(AppLocalizations.of(context).downloading_file(attachment.name ?? '')) ..actionText(AppLocalizations.of(context).cancel) @@ -285,7 +280,7 @@ class EmailController extends BaseController { context: context, builder: (_) => PointerInterceptor(child: (DownloadingFileDialogBuilder() - ..key(Key('downloading_file_for_web_dialog')) + ..key(const Key('downloading_file_for_web_dialog')) ..title(AppLocalizations.of(context).preparing_to_save) ..content(AppLocalizations.of(context).downloading_file(attachment.name ?? ''))) .build())); @@ -301,7 +296,7 @@ class EmailController extends BaseController { } void _exportAttachmentFailureAction(Failure failure) { - if (failure is ExportAttachmentFailure && !(failure.exception is CancelDownloadFileException)) { + if (failure is ExportAttachmentFailure && failure.exception is! CancelDownloadFileException) { popBack(); } } @@ -589,12 +584,12 @@ class EmailController extends BaseController { context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) - ..key(Key('confirm_dialog_delete_email_permanently')) + ..key(const Key('confirm_dialog_delete_email_permanently')) ..title(DeleteActionType.single.getTitleDialog(context)) ..content(DeleteActionType.single.getContentDialog(context)) ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..colorConfirmButton(AppColor.colorConfirmActionDialog) - ..styleTextConfirmButton(TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog)) + ..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog)) ..onCloseButtonAction(() => popBack()) ..onConfirmButtonAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email)) ..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack())) diff --git a/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart b/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart index 3500b8027..d49304111 100644 --- a/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart +++ b/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart @@ -55,16 +55,16 @@ class AttachmentFileTileBuilder { splashColor: Colors.transparent , highlightColor: Colors.transparent), child: Container( - key: Key('attach_file_tile'), + key: const Key('attach_file_tile'), alignment: Alignment.center, margin: EdgeInsets.only(top:heightItem != null ? 8 : 0), - height: heightItem ?? null, + height: heightItem, decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border.all(color: AppColor.attachmentFileBorderColor), color: Colors.white), child: MediaQuery( - data: MediaQueryData(padding: EdgeInsets.zero), + data: const MediaQueryData(padding: EdgeInsets.zero), child: Stack( alignment: AlignmentDirectional.bottomEnd, children: [ @@ -85,7 +85,7 @@ class AttachmentFileTileBuilder { _attachment.name ?? '', maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 12, color: AppColor.attachmentFileNameColor, fontWeight: FontWeight.w500), + style: const TextStyle(fontSize: 12, color: AppColor.attachmentFileNameColor, fontWeight: FontWeight.w500), )), subtitle: _attachment.size != null && _attachment.size?.value != 0 ? Transform( @@ -94,7 +94,7 @@ class AttachmentFileTileBuilder { filesize(_attachment.size?.value), maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 12, color: AppColor.attachmentFileSizeColor))) + style: const TextStyle(fontSize: 12, color: AppColor.attachmentFileSizeColor))) : null, trailing: buttonAction != null ? Transform( @@ -134,7 +134,7 @@ class AttachmentFileTileBuilder { Container(color: AppColor.backgroundCountAttachment), Text( '+${_attachmentSize - _limitDisplayAttachment + 1}', - style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.bold)) + style: const TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.bold)) ], ), ); diff --git a/lib/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart b/lib/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart index 8ef6165cd..7736b6e31 100644 --- a/lib/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart +++ b/lib/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart @@ -23,9 +23,9 @@ Decoration _radiusBoxDecoration({ return color; }).toList() : [ - Color.fromRGBO(0, 0, 0, 0.1), - Color(0x32E5E5E5), - Color.fromRGBO(0, 0, 0, 0.1), + const Color.fromRGBO(0, 0, 0, 0.1), + const Color(0x32E5E5E5), + const Color.fromRGBO(0, 0, 0, 0.1), ], stops: [animation.value - 2, animation.value, animation.value + 1])); } @@ -50,7 +50,7 @@ class _AttachmentsPlaceHolderLoadingState extends State(begin: -2, end: 2) .animate(CurvedAnimation(curve: Curves.easeInOutSine, parent: _animationController)); } @@ -67,13 +67,13 @@ class _AttachmentsPlaceHolderLoadingState extends State 1) Expanded(child: (ButtonBuilder(_imagePaths.icReplyAll) - ..key(Key('button_reply_all_message')) + ..key(const Key('button_reply_all_message')) ..size(15) ..paddingIcon(EdgeInsets.only( top: _responsiveUtils.isMobile(_context) ? 10 : 16, @@ -60,7 +60,7 @@ class BottomBarMailWidgetBuilder { ..text(AppLocalizations.of(_context).reply_all, isVertical: _responsiveUtils.isMobile(_context))) .build()), Expanded(child: (ButtonBuilder(_imagePaths.icReply) - ..key(Key('button_reply_message')) + ..key(const Key('button_reply_message')) ..size(20) ..paddingIcon(EdgeInsets.only( top: _responsiveUtils.isMobile(_context) ? 10 : 16, @@ -76,7 +76,7 @@ class BottomBarMailWidgetBuilder { ..text(AppLocalizations.of(_context).reply, isVertical: _responsiveUtils.isMobile(_context))) .build()), Expanded(child: (ButtonBuilder(_imagePaths.icForward) - ..key(Key('button_forward_message')) + ..key(const Key('button_forward_message')) ..size(20) ..paddingIcon(EdgeInsets.only( top: _responsiveUtils.isMobile(_context) ? 10 : 16, @@ -93,7 +93,7 @@ class BottomBarMailWidgetBuilder { .build()), if (!_responsiveUtils.isDesktop(_context)) Expanded(child: (ButtonBuilder(_imagePaths.icNewMessage) - ..key(Key('button_new_message')) + ..key(const Key('button_new_message')) ..size(20) ..paddingIcon(EdgeInsets.only( top: _responsiveUtils.isMobile(_context) ? 10 : 16, diff --git a/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart index b0b47f93a..873a7d5e3 100644 --- a/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart +++ b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart @@ -34,7 +34,7 @@ class EmailActionCupertinoActionSheetActionBuilder extends CupertinoActionSheetA key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: iconLeftPadding ?? EdgeInsets.only(left: 12, right: 16), + padding: iconLeftPadding ?? const EdgeInsets.only(left: 12, right: 16), child: actionIcon), Expanded(child: Text(actionName, textAlign: TextAlign.left, style: actionTextStyle())), ]), diff --git a/lib/features/email/presentation/widgets/email_address_bottom_sheet_builder.dart b/lib/features/email/presentation/widgets/email_address_bottom_sheet_builder.dart index 921388afc..e685fada9 100644 --- a/lib/features/email/presentation/widgets/email_address_bottom_sheet_builder.dart +++ b/lib/features/email/presentation/widgets/email_address_bottom_sheet_builder.dart @@ -41,18 +41,18 @@ class EmailAddressBottomSheetBuilder { } RoundedRectangleBorder _shape() { - return RoundedRectangleBorder( + return const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(20.0), topRight: Radius.circular(20.0))); } BoxDecoration _decoration(BuildContext context) { - return BoxDecoration( + return const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( - topLeft: const Radius.circular(20.0), - topRight: const Radius.circular(20.0))); + topLeft: Radius.circular(20.0), + topRight: Radius.circular(20.0))); } void show() { @@ -70,27 +70,27 @@ class EmailAddressBottomSheetBuilder { Align( alignment: Alignment.centerRight, child: IconButton( - padding: EdgeInsets.only(top: 16, right: 16), + padding: const EdgeInsets.only(top: 16, right: 16), onPressed: () => _onCloseBottomSheetAction?.call(), icon: SvgPicture.asset(_imagePaths.icCloseMailbox, width: 24, height: 24, fit: BoxFit.fill))), (AvatarBuilder() - ..text('${_emailAddress.asString().characters.first.toUpperCase()}') + ..text(_emailAddress.asString().characters.first.toUpperCase()) ..size(64) - ..addTextStyle(TextStyle(fontWeight: FontWeight.w600, fontSize: 23, color: Colors.white)) + ..addTextStyle(const TextStyle(fontWeight: FontWeight.w600, fontSize: 23, color: Colors.white)) ..avatarColor(_emailAddress.avatarColors)) .build(), if (_emailAddress.displayName.isNotEmpty) Padding( - padding: EdgeInsets.only(left: 16, right: 16, top: 16), + padding: const EdgeInsets.only(left: 16, right: 16, top: 16), child: Text( _emailAddress.asString(), - style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: AppColor.colorNameEmail), + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: AppColor.colorNameEmail), )), Padding( padding: EdgeInsets.only(left: 16, right: 16, top: _emailAddress.displayName.isNotEmpty ? 12 : 16), child: Text( _emailAddress.emailAddress, - style: TextStyle(fontSize: 17, fontWeight: FontWeight.normal, color: AppColor.colorMessageConfirmDialog), + style: const TextStyle(fontSize: 17, fontWeight: FontWeight.normal, color: AppColor.colorMessageConfirmDialog), )), Material( borderRadius: BorderRadius.circular(20), @@ -98,16 +98,16 @@ class EmailAddressBottomSheetBuilder { child: TextButton( child: Text( AppLocalizations.of(_context).copy_email_address, - style: TextStyle(fontSize: 13, color: AppColor.colorTextButton, fontWeight: FontWeight.normal), + style: const TextStyle(fontSize: 13, color: AppColor.colorTextButton, fontWeight: FontWeight.normal), ), onPressed: () => _onCopyEmailAddressAction?.call(_emailAddress) ) ), SizedBox(height: _emailAddress.displayName.isNotEmpty ? 100 : 130), Padding( - padding: EdgeInsets.only(left: 16, right: 16, bottom: 20), + padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), child: SizedBox( - key: Key('compose_email_button'), + key: const Key('compose_email_button'), width: double.infinity, height: 48, child: ElevatedButton( @@ -116,8 +116,8 @@ class EmailAddressBottomSheetBuilder { backgroundColor: MaterialStateProperty.resolveWith((Set states) => AppColor.colorTextButton), shape: MaterialStateProperty.all(RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: BorderSide(width: 0, color: AppColor.colorTextButton)))), - child: Text(AppLocalizations.of(_context).compose_email, style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500)), + side: const BorderSide(width: 0, color: AppColor.colorTextButton)))), + child: Text(AppLocalizations.of(_context).compose_email, style: const TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500)), onPressed: () => _onComposeEmailAction?.call(_emailAddress)), ) ) diff --git a/lib/features/email/presentation/widgets/email_address_dialog_builder.dart b/lib/features/email/presentation/widgets/email_address_dialog_builder.dart index b4f256629..fcf23c551 100644 --- a/lib/features/email/presentation/widgets/email_address_dialog_builder.dart +++ b/lib/features/email/presentation/widgets/email_address_dialog_builder.dart @@ -40,13 +40,13 @@ class EmailAddressDialogBuilder { Widget build() { return Dialog( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(16))), - insetPadding: EdgeInsets.symmetric(horizontal: 24.0, vertical: 16.0), + shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(16))), + insetPadding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 16.0), child: Container( margin: EdgeInsets.zero, padding: EdgeInsets.zero, width: 400, - decoration: BoxDecoration( + decoration: const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(16))), child: Wrap( @@ -54,48 +54,48 @@ class EmailAddressDialogBuilder { Align( alignment: Alignment.centerRight, child: IconButton( - padding: EdgeInsets.only(top: 16, right: 16), + padding: const EdgeInsets.only(top: 16, right: 16), onPressed: () => _onCloseDialogAction?.call(), icon: SvgPicture.asset(_imagePaths.icCloseMailbox, width: 24, height: 24, fit: BoxFit.fill))), - Padding(padding: EdgeInsets.symmetric(horizontal: 16), + Padding(padding: const EdgeInsets.symmetric(horizontal: 16), child: Center(child: (AvatarBuilder() - ..text('${_emailAddress.asString().characters.first.toUpperCase()}') + ..text(_emailAddress.asString().characters.first.toUpperCase()) ..size(64) - ..addTextStyle(TextStyle(fontWeight: FontWeight.w600, fontSize: 23, color: Colors.white)) + ..addTextStyle(const TextStyle(fontWeight: FontWeight.w600, fontSize: 23, color: Colors.white)) ..avatarColor(_emailAddress.avatarColors)) .build())), if (_emailAddress.displayName.isNotEmpty) Padding( - padding: EdgeInsets.only(left: 16, right: 16, top: 16), + padding: const EdgeInsets.only(left: 16, right: 16, top: 16), child: Center(child: Text( _emailAddress.asString(), - style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: AppColor.colorNameEmail), + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: AppColor.colorNameEmail), )) ), Padding( padding: EdgeInsets.only(left: 16, right: 16, top: _emailAddress.displayName.isNotEmpty ? 12 : 16), child: Center(child: Text( _emailAddress.emailAddress, - style: TextStyle(fontSize: 17, fontWeight: FontWeight.normal, color: AppColor.colorMessageConfirmDialog), + style: const TextStyle(fontSize: 17, fontWeight: FontWeight.normal, color: AppColor.colorMessageConfirmDialog), )) ), - Padding(padding: EdgeInsets.symmetric(horizontal: 16), + Padding(padding: const EdgeInsets.symmetric(horizontal: 16), child: Center(child: Material( borderRadius: BorderRadius.circular(20), color: Colors.transparent, child: TextButton( child: Text( AppLocalizations.of(_context).copy_email_address, - style: TextStyle(fontSize: 13, color: AppColor.colorTextButton, fontWeight: FontWeight.normal), + style: const TextStyle(fontSize: 13, color: AppColor.colorTextButton, fontWeight: FontWeight.normal), ), onPressed: () => _onCopyEmailAddressAction?.call(_emailAddress) ) ))), SizedBox(height: _emailAddress.displayName.isNotEmpty ? 100 : 130), Padding( - padding: EdgeInsets.only(left: 16, right: 16, bottom: 20), + padding: const EdgeInsets.only(left: 16, right: 16, bottom: 20), child: SizedBox( - key: Key('compose_email_button'), + key: const Key('compose_email_button'), width: double.infinity, height: 48, child: ElevatedButton( @@ -104,8 +104,8 @@ class EmailAddressDialogBuilder { backgroundColor: MaterialStateProperty.resolveWith((Set states) => AppColor.colorTextButton), shape: MaterialStateProperty.all(RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: BorderSide(width: 0, color: AppColor.colorTextButton)))), - child: Text(AppLocalizations.of(_context).compose_email, style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500)), + side: const BorderSide(width: 0, color: AppColor.colorTextButton)))), + child: Text(AppLocalizations.of(_context).compose_email, style: const TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500)), onPressed: () => _onComposeEmailAction?.call(_emailAddress)), ) ) diff --git a/lib/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart b/lib/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart index 370ab01f9..c2ae441d6 100644 --- a/lib/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart +++ b/lib/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart @@ -23,9 +23,9 @@ Decoration _radiusBoxDecoration({ return color; }).toList() : [ - Color.fromRGBO(0, 0, 0, 0.1), - Color(0x32E5E5E5), - Color.fromRGBO(0, 0, 0, 0.1), + const Color.fromRGBO(0, 0, 0, 0.1), + const Color(0x32E5E5E5), + const Color.fromRGBO(0, 0, 0, 0.1), ], stops: [animation.value - 2, animation.value, animation.value + 1])); } @@ -50,7 +50,7 @@ class _EmailContentPlaceHolderLoadingState extends State(begin: -2, end: 2) .animate(CurvedAnimation(curve: Curves.easeInOutSine, parent: _animationController)); } @@ -67,22 +67,22 @@ class _EmailContentPlaceHolderLoadingState extends State HomeController( diff --git a/lib/features/home/presentation/home_view.dart b/lib/features/home/presentation/home_view.dart index eaecb9253..7e38236e1 100644 --- a/lib/features/home/presentation/home_view.dart +++ b/lib/features/home/presentation/home_view.dart @@ -4,12 +4,13 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/home/presentation/home_controller.dart'; class HomeView extends GetWidget { + const HomeView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Container( color: AppColor.primaryLightColor, - child: SizedBox( + child: const SizedBox( width: 100, height: 100, child: CupertinoActivityIndicator(), diff --git a/lib/features/login/domain/exceptions/authentication_exception.dart b/lib/features/login/domain/exceptions/authentication_exception.dart index 9463daa82..38df1aa99 100644 --- a/lib/features/login/domain/exceptions/authentication_exception.dart +++ b/lib/features/login/domain/exceptions/authentication_exception.dart @@ -1,13 +1,13 @@ import 'package:equatable/equatable.dart'; abstract class AuthenticationException extends Equatable { - static final wrongCredential = 'Credential is wrong'; + static const wrongCredential = 'Credential is wrong'; - AuthenticationException(String message); + const AuthenticationException(String message); } class BadCredentials extends AuthenticationException { - BadCredentials() : super(AuthenticationException.wrongCredential); + const BadCredentials() : super(AuthenticationException.wrongCredential); @override List get props => []; diff --git a/lib/features/login/presentation/login_bindings.dart b/lib/features/login/presentation/login_bindings.dart index 662e8794c..95c2821f1 100644 --- a/lib/features/login/presentation/login_bindings.dart +++ b/lib/features/login/presentation/login_bindings.dart @@ -13,11 +13,6 @@ import 'package:tmail_ui_user/features/login/presentation/login_controller.dart' class LoginBindings extends BaseBindings { - @override - void dependencies() { - super.dependencies(); - } - @override void bindingsController() { Get.lazyPut(() => LoginController( diff --git a/lib/features/login/presentation/login_view.dart b/lib/features/login/presentation/login_view.dart index 8e50e7909..0a4877560 100644 --- a/lib/features/login/presentation/login_view.dart +++ b/lib/features/login/presentation/login_view.dart @@ -15,6 +15,8 @@ class LoginView extends GetWidget { final responsiveUtils = Get.find(); final keyboardUtils = Get.find(); + LoginView({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return Scaffold( @@ -30,7 +32,7 @@ class LoginView extends GetWidget { padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), child: Container( alignment: Alignment.center, - padding: EdgeInsets.only(top: 40), + padding: const EdgeInsets.only(top: 40), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, @@ -58,18 +60,18 @@ class LoginView extends GetWidget { return (SloganBuilder() ..setSloganText(AppLocalizations.of(context).login_text_slogan) ..setSloganTextAlign(TextAlign.center) - ..setSloganTextStyle(TextStyle(color: AppColor.primaryColor, fontSize: 16, fontWeight: FontWeight.w700)) + ..setSloganTextStyle(const TextStyle(color: AppColor.primaryColor, fontSize: 16, fontWeight: FontWeight.w700)) ..setLogo(imagePaths.icLogoTMail)) .build(); } Widget _buildLoginMessage(BuildContext context, LoginState loginState) { return Padding( - padding: EdgeInsets.only(bottom: 24, top: 60), - child: Container( + padding: const EdgeInsets.only(bottom: 24, top: 60), + child: SizedBox( width: responsiveUtils.getWidthLoginTextField(context), child: CenterTextBuilder() - .key(Key('login_message')) + .key(const Key('login_message')) .text(loginState.viewState.fold( (failure) => failure is AuthenticationUserFailure ? AppLocalizations.of(context).unknown_error_login_message @@ -88,11 +90,11 @@ class LoginView extends GetWidget { Widget _buildUrlInput(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: 16), - child: Container( + padding: const EdgeInsets.only(bottom: 16), + child: SizedBox( width: responsiveUtils.getWidthLoginTextField(context), child: (TextFieldBuilder() - ..key(Key('login_url_input')) + ..key(const Key('login_url_input')) ..onChange((value) => loginController.formatUrl(value)) ..textInputAction(TextInputAction.next) ..addController(loginController.urlInputController) @@ -106,11 +108,11 @@ class LoginView extends GetWidget { Widget _buildUserNameInput(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: 16), - child: Container( + padding: const EdgeInsets.only(bottom: 16), + child: SizedBox( width: responsiveUtils.getWidthLoginTextField(context), child: (TextFieldBuilder() - ..key(Key('login_username_input')) + ..key(const Key('login_username_input')) ..onChange((value) => loginController.setUserNameText(value)) ..textInputAction(TextInputAction.next) ..keyboardType(TextInputType.emailAddress) @@ -123,11 +125,11 @@ class LoginView extends GetWidget { Widget _buildPasswordInput(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: 40), - child: Container( + padding: const EdgeInsets.only(bottom: 40), + child: SizedBox( width: responsiveUtils.getWidthLoginTextField(context), child: (TextFieldBuilder() - ..key(Key('login_password_input')) + ..key(const Key('login_password_input')) ..obscureText(true) ..onChange((value) => loginController.setPasswordText(value)) ..textInputAction(TextInputAction.done) @@ -140,9 +142,9 @@ class LoginView extends GetWidget { Widget _buildLoginButton(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: 16), + padding: const EdgeInsets.only(bottom: 16), child: SizedBox( - key: Key('login_confirm_button'), + key: const Key('login_confirm_button'), width: responsiveUtils.getWidthLoginButton(), height: 48, child: ElevatedButton( @@ -151,8 +153,8 @@ class LoginView extends GetWidget { backgroundColor: MaterialStateProperty.resolveWith((Set states) => AppColor.buttonColor), shape: MaterialStateProperty.all(RoundedRectangleBorder( borderRadius: BorderRadius.circular(80), - side: BorderSide(width: 0, color: AppColor.buttonColor)))), - child: Text(AppLocalizations.of(context).login, style: TextStyle(fontSize: 16, color: Colors.white)), + side: const BorderSide(width: 0, color: AppColor.buttonColor)))), + child: Text(AppLocalizations.of(context).login, style: const TextStyle(fontSize: 16, color: Colors.white)), onPressed: () { keyboardUtils.hideKeyboard(context); loginController.handleLoginPressed(); @@ -162,7 +164,7 @@ class LoginView extends GetWidget { } Widget _buildLoadingCircularProgress() { - return SizedBox( + return const SizedBox( key: Key('login_loading_icon'), width: 40, height: 40, diff --git a/lib/features/login/presentation/widgets/login_input_decoration_builder.dart b/lib/features/login/presentation/widgets/login_input_decoration_builder.dart index a5c56b330..23e903d48 100644 --- a/lib/features/login/presentation/widgets/login_input_decoration_builder.dart +++ b/lib/features/login/presentation/widgets/login_input_decoration_builder.dart @@ -7,22 +7,22 @@ class LoginInputDecorationBuilder extends InputDecorationBuilder { @override InputDecoration build() { return InputDecoration( - enabledBorder: enabledBorder ?? OutlineInputBorder( + enabledBorder: enabledBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(29)), borderSide: BorderSide(width: 1, color: AppColor.textFieldBorderColor)), - focusedBorder: enabledBorder ?? OutlineInputBorder( + focusedBorder: enabledBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(29)), borderSide: BorderSide(width: 2, color: AppColor.textFieldFocusedBorderColor)), - errorBorder: OutlineInputBorder( + errorBorder: const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(29)), borderSide: BorderSide(width: 1, color: AppColor.textFieldErrorBorderColor)), prefixText: prefixText, labelText: labelText, floatingLabelBehavior: FloatingLabelBehavior.never, - labelStyle: labelStyle ?? TextStyle(color: AppColor.textFieldLabelColor, fontSize: 16), + labelStyle: labelStyle ?? const TextStyle(color: AppColor.textFieldLabelColor, fontSize: 16), hintText: hintText, - hintStyle: hintStyle ?? TextStyle(color: AppColor.textFieldHintColor, fontSize: 16), - contentPadding: contentPadding ?? EdgeInsets.only(left: 25, top: 15, bottom: 15, right: 25), + hintStyle: hintStyle ?? const TextStyle(color: AppColor.textFieldHintColor, fontSize: 16), + contentPadding: contentPadding ?? const EdgeInsets.only(left: 25, top: 15, bottom: 15, right: 25), filled: true, fillColor: AppColor.textFieldBorderColor); } diff --git a/lib/features/mailbox_creator/domain/exceptions/verify_name_exception.dart b/lib/features/mailbox_creator/domain/exceptions/verify_name_exception.dart index 484b2debf..11a5d059e 100644 --- a/lib/features/mailbox_creator/domain/exceptions/verify_name_exception.dart +++ b/lib/features/mailbox_creator/domain/exceptions/verify_name_exception.dart @@ -2,31 +2,31 @@ import 'package:equatable/equatable.dart'; abstract class VerifyNameException extends Equatable implements Exception { - static const EmptyName = 'The name cannot be empty!'; - static const DuplicatedName = 'The name already exists!'; - static const NameContainSpecialCharacter = 'The name cannot contain special characters'; + static const emptyName = 'The name cannot be empty!'; + static const duplicatedName = 'The name already exists!'; + static const nameContainSpecialCharacter = 'The name cannot contain special characters'; final String? message; - VerifyNameException(this.message); + const VerifyNameException(this.message); } class EmptyNameException extends VerifyNameException { - EmptyNameException() : super(VerifyNameException.EmptyName); + const EmptyNameException() : super(VerifyNameException.emptyName); @override List get props => []; } class DuplicatedNameException extends VerifyNameException { - DuplicatedNameException() : super(VerifyNameException.DuplicatedName); + const DuplicatedNameException() : super(VerifyNameException.duplicatedName); @override List get props => []; } class SpecialCharacterException extends VerifyNameException { - SpecialCharacterException() : super(VerifyNameException.NameContainSpecialCharacter); + const SpecialCharacterException() : super(VerifyNameException.nameContainSpecialCharacter); @override List get props => []; diff --git a/lib/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart b/lib/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart index 7df0496e0..5c48b3340 100644 --- a/lib/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart +++ b/lib/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart @@ -17,7 +17,7 @@ class DuplicateNameValidator extends Validator { .map((nameItem) => nameItem.toLowerCase()) .contains(newNameRequest.value!.toLowerCase()); if (nameExist) { - return Left(VerifyNameFailure(DuplicatedNameException())); + return Left(VerifyNameFailure(const DuplicatedNameException())); } else { return Right(VerifyNameViewState()); } diff --git a/lib/features/mailbox_creator/domain/model/verification/empty_name_validator.dart b/lib/features/mailbox_creator/domain/model/verification/empty_name_validator.dart index 6822abb39..c0d628763 100644 --- a/lib/features/mailbox_creator/domain/model/verification/empty_name_validator.dart +++ b/lib/features/mailbox_creator/domain/model/verification/empty_name_validator.dart @@ -11,7 +11,7 @@ class EmptyNameValidator extends Validator { @override Either validate(NewNameRequest newNameRequest) { if (newNameRequest.value == null || newNameRequest.value!.isEmpty) { - return Left(VerifyNameFailure(EmptyNameException())); + return Left(VerifyNameFailure(const EmptyNameException())); } else { return Right(VerifyNameViewState()); } diff --git a/lib/features/mailbox_creator/domain/model/verification/special_character_validator.dart b/lib/features/mailbox_creator/domain/model/verification/special_character_validator.dart index 7242bfff6..d53ea3244 100644 --- a/lib/features/mailbox_creator/domain/model/verification/special_character_validator.dart +++ b/lib/features/mailbox_creator/domain/model/verification/special_character_validator.dart @@ -12,7 +12,7 @@ class SpecialCharacterValidator extends Validator { @override Either validate(NewNameRequest newNameRequest) { if (newNameRequest.value != null && newNameRequest.value!.hasSpecialCharactersInName()) { - return Left(VerifyNameFailure(SpecialCharacterException())); + return Left(VerifyNameFailure(const SpecialCharacterException())); } else { return Right(VerifyNameViewState()); } diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_bindings.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_bindings.dart index 377d79351..2a3b36047 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_bindings.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_bindings.dart @@ -5,11 +5,6 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_crea class MailboxCreatorBindings extends BaseBindings { - @override - void dependencies() { - super.dependencies(); - } - @override void bindingsController() { Get.lazyPut(() => MailboxCreatorController( diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart index e2b0e8f23..cc3d8cfcc 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart @@ -1,6 +1,5 @@ import 'package:core/core.dart'; -import 'package:dartz/dartz.dart'; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -56,11 +55,6 @@ class MailboxCreatorController extends BaseController { } } - @override - void onData(Either newState) { - super.onData(newState); - } - @override void onDone() { } diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart index 51d89ac6b..3d5fb21b6 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart @@ -77,7 +77,7 @@ class MailboxCreatorView extends GetWidget { Widget _buildAppBar(BuildContext context) { return Padding( - padding: EdgeInsets.only(top: 5), + padding: const EdgeInsets.only(top: 5), child: Obx(() => (AppBarMailboxCreatorBuilder( context, title: AppLocalizations.of(context).new_mailbox, @@ -90,13 +90,13 @@ class MailboxCreatorView extends GetWidget { Widget _buildCreateMailboxNameInput(BuildContext context) { return Padding( - padding: EdgeInsets.symmetric(horizontal: 16, vertical: 14), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), child: Obx(() => (TextFieldBuilder() - ..key(Key('create_mailbox_name_input')) + ..key(const Key('create_mailbox_name_input')) ..onChange((value) => controller.setNewNameMailbox(value)) ..keyboardType(TextInputType.visiblePassword) ..cursorColor(AppColor.colorTextButton) - ..textStyle(TextStyle(color: AppColor.colorNameEmail, fontSize: 16)) + ..textStyle(const TextStyle(color: AppColor.colorNameEmail, fontSize: 16)) ..addFocusNode(controller.nameInputFocusNode) ..textDecoration((CreateMailboxNameInputDecorationBuilder() ..setHintText(AppLocalizations.of(context).hint_input_create_new_mailbox) @@ -109,26 +109,26 @@ class MailboxCreatorView extends GetWidget { Widget _buildMailboxLocation(BuildContext context) { return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(left: 24, right: 16, top: 16), + padding: const EdgeInsets.only(left: 24, right: 16, top: 16), child: Text( AppLocalizations.of(context).mailbox_location.toUpperCase(), textAlign: TextAlign.left, - style: TextStyle(fontSize: 13, color: AppColor.colorHintSearchBar)), + style: const TextStyle(fontSize: 13, color: AppColor.colorHintSearchBar)), ), Container( alignment: Alignment.center, - margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(14), color: Colors.white ), child: MediaQuery( - data: MediaQueryData(padding: EdgeInsets.zero), + data: const MediaQueryData(padding: EdgeInsets.zero), child: ListTile( contentPadding: EdgeInsets.zero, onTap: () => controller.selectMailboxLocation(context), leading: Padding( - padding: EdgeInsets.only(left: 16), + padding: const EdgeInsets.only(left: 16), child: SvgPicture.asset( _imagePaths.icFolderMailbox, width: 28, @@ -138,7 +138,7 @@ class MailboxCreatorView extends GetWidget { transform: Matrix4.translationValues(-5.0, 0.0, 0.0), child: Row(children: [ Expanded(child: Obx(() => Text( - '${controller.selectedMailbox.value?.name?.name ?? AppLocalizations.of(context).default_mailbox}', + controller.selectedMailbox.value?.name?.name ?? AppLocalizations.of(context).default_mailbox, maxLines: 1, overflow:TextOverflow.ellipsis, style: TextStyle( diff --git a/lib/features/mailbox_creator/presentation/widgets/app_bar_mailbox_creator_builder.dart b/lib/features/mailbox_creator/presentation/widgets/app_bar_mailbox_creator_builder.dart index 218e286b9..74222c76a 100644 --- a/lib/features/mailbox_creator/presentation/widgets/app_bar_mailbox_creator_builder.dart +++ b/lib/features/mailbox_creator/presentation/widgets/app_bar_mailbox_creator_builder.dart @@ -32,14 +32,14 @@ class AppBarMailboxCreatorBuilder { Widget build() { return Container( - key: Key('app_bar_mailbox_creator'), + key: const Key('app_bar_mailbox_creator'), alignment: Alignment.center, - padding: EdgeInsets.symmetric(vertical: 8, horizontal: 12), - decoration: BoxDecoration( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + decoration: const BoxDecoration( borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)), color: AppColor.colorBgMailbox), child: MediaQuery( - data: MediaQueryData(padding: EdgeInsets.zero), + data: const MediaQueryData(padding: EdgeInsets.zero), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -59,7 +59,7 @@ class AppBarMailboxCreatorBuilder { child: TextButton( child: Text( AppLocalizations.of(_context).cancel, - style: TextStyle(fontSize: 17, color: AppColor.colorTextButton), + style: const TextStyle(fontSize: 17, color: AppColor.colorTextButton), ), onPressed: () => _cancelActionClick?.call() ) @@ -82,10 +82,10 @@ class AppBarMailboxCreatorBuilder { Widget _buildTitle() { return Padding( - padding: EdgeInsets.symmetric(horizontal: 8), + padding: const EdgeInsets.symmetric(horizontal: 8), child: Text( title ?? '', textAlign: TextAlign.center, - style: TextStyle(fontSize: 20, color: AppColor.colorNameEmail, fontWeight: FontWeight.bold))); + style: const TextStyle(fontSize: 20, color: AppColor.colorNameEmail, fontWeight: FontWeight.bold))); } } \ No newline at end of file diff --git a/lib/features/mailbox_creator/presentation/widgets/create_mailbox_name_input_decoration_builder.dart b/lib/features/mailbox_creator/presentation/widgets/create_mailbox_name_input_decoration_builder.dart index 89993199a..9aa34d440 100644 --- a/lib/features/mailbox_creator/presentation/widgets/create_mailbox_name_input_decoration_builder.dart +++ b/lib/features/mailbox_creator/presentation/widgets/create_mailbox_name_input_decoration_builder.dart @@ -7,27 +7,27 @@ class CreateMailboxNameInputDecorationBuilder extends InputDecorationBuilder { @override InputDecoration build() { return InputDecoration( - enabledBorder: enabledBorder ?? OutlineInputBorder( + enabledBorder: enabledBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderCreateMailbox)), - focusedBorder: enabledBorder ?? OutlineInputBorder( + focusedBorder: enabledBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(width: 1, color: AppColor.colorTextButton)), - errorBorder: errorBorder ?? OutlineInputBorder( + errorBorder: errorBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderErrorVerifyName)), - focusedErrorBorder: errorBorder ?? OutlineInputBorder( + focusedErrorBorder: errorBorder ?? const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderErrorVerifyName)), prefixText: prefixText, labelText: labelText, floatingLabelBehavior: FloatingLabelBehavior.never, - labelStyle: labelStyle ?? TextStyle(color: AppColor.colorNameEmail, fontSize: 16), + labelStyle: labelStyle ?? const TextStyle(color: AppColor.colorNameEmail, fontSize: 16), hintText: hintText, - hintStyle: hintStyle ?? TextStyle(color: AppColor.colorHintInputCreateMailbox, fontSize: 16), - contentPadding: contentPadding ?? EdgeInsets.all(12), + hintStyle: hintStyle ?? const TextStyle(color: AppColor.colorHintInputCreateMailbox, fontSize: 16), + contentPadding: contentPadding ?? const EdgeInsets.all(12), errorText: errorText, - errorStyle: errorTextStyle ?? TextStyle(color: AppColor.colorInputBorderErrorVerifyName, fontSize: 13), + errorStyle: errorTextStyle ?? const TextStyle(color: AppColor.colorInputBorderErrorVerifyName, fontSize: 13), filled: true, fillColor: errorText?.isNotEmpty == true ? AppColor.colorInputBackgroundErrorVerifyName diff --git a/lib/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart b/lib/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart index d2f4a3644..f48b52ace 100644 --- a/lib/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart +++ b/lib/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart @@ -15,11 +15,11 @@ mixin FilterEmailPopupMenuMixin { PopupMenuItem( padding: EdgeInsets.zero, child: _filterEmailAction(context, optionSelected, FilterMessageOption.attachments, onCallBack)), - PopupMenuDivider(height: 0.5), + const PopupMenuDivider(height: 0.5), PopupMenuItem( padding: EdgeInsets.zero, child: _filterEmailAction(context, optionSelected, FilterMessageOption.unread, onCallBack)), - PopupMenuDivider(height: 0.5), + const PopupMenuDivider(height: 0.5), PopupMenuItem( padding: EdgeInsets.zero, child: _filterEmailAction(context, optionSelected, FilterMessageOption.starred, onCallBack)), @@ -31,7 +31,7 @@ mixin FilterEmailPopupMenuMixin { return InkWell( onTap: () => onCallBack?.call(option == optionSelected ? FilterMessageOption.all : option), child: Padding( - padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 16), child: SizedBox( child: Row(children: [ SvgPicture.asset(option.getIcon(_imagePaths), @@ -39,12 +39,12 @@ mixin FilterEmailPopupMenuMixin { height: 20, fit: BoxFit.fill, color: option != FilterMessageOption.starred ? AppColor.colorTextButton : null), - SizedBox(width: 12), + const SizedBox(width: 12), Expanded(child: Text( option.getName(context), - style: TextStyle(fontSize: 15, color: Colors.black, fontWeight: FontWeight.w500))), + style: const TextStyle(fontSize: 15, color: Colors.black, fontWeight: FontWeight.w500))), if (optionSelected == option) - SizedBox(width: 12), + const SizedBox(width: 12), if (optionSelected == option) SvgPicture.asset(_imagePaths.icFilterSelected, width: 16, height: 16, fit: BoxFit.fill), ]) diff --git a/lib/features/session/presentation/session_page_bindings.dart b/lib/features/session/presentation/session_page_bindings.dart index be9758be7..3e31dd9c7 100644 --- a/lib/features/session/presentation/session_page_bindings.dart +++ b/lib/features/session/presentation/session_page_bindings.dart @@ -7,11 +7,6 @@ import 'package:tmail_ui_user/features/session/presentation/session_controller.d class SessionPageBindings extends BaseBindings { - @override - void dependencies() { - super.dependencies(); - } - @override void bindingsController() { Get.lazyPut(() => SessionController( diff --git a/lib/features/session/presentation/session_view.dart b/lib/features/session/presentation/session_view.dart index 60f8eb99a..02f7d83ad 100644 --- a/lib/features/session/presentation/session_view.dart +++ b/lib/features/session/presentation/session_view.dart @@ -4,12 +4,13 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/session/presentation/session_controller.dart'; class SessionView extends GetWidget { + const SessionView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Container( color: AppColor.primaryLightColor, - child: SizedBox( + child: const SizedBox( width: 100, height: 100, child: CupertinoActivityIndicator(),