diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index 538dc5d75..4bb31a17a 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -1,4 +1,3 @@ -import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; @@ -6,8 +5,6 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; abstract class BaseMailboxView extends GetWidget with @@ -18,15 +15,4 @@ abstract class BaseMailboxView extends GetWidget final responsiveUtils = Get.find(); final imagePaths = Get.find(); - - Widget buildUserInformation(BuildContext context) { - return Column(mainAxisSize: MainAxisSize.min, children: [ - Obx(() => UserInformationWidgetBuilder( - imagePaths, - controller.mailboxDashBoardController.userProfile.value, - subtitle: AppLocalizations.of(context).manage_account, - onSubtitleClick: controller.mailboxDashBoardController.goToSettings)), - const Divider(color: AppColor.colorDividerMailbox, height: 1) - ]); - } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index 9025a6384..e5c52c547 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_loading_bar_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/sending_queue_mailbox_widget.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart'; import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -166,7 +167,17 @@ class MailboxView extends BaseMailboxView { if (controller.isSelectionEnabled() && responsiveUtils.isLandscapeMobile(context)) { return const SizedBox.shrink(); } - return buildUserInformation(context); + return UserInformationWidget( + userProfile: controller.mailboxDashBoardController.userProfile.value, + subtitle: AppLocalizations.of(context).manage_account, + onSubtitleClick: controller.mailboxDashBoardController.goToSettings, + border: const Border( + bottom: BorderSide( + color: AppColor.colorDividerHorizontal, + width: 0.5, + ) + ), + ); }), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)), AppConfig.appGridDashboardAvailable diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index 3d1e121df..e935eb9d3 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.d import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_loading_bar_widget.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart'; import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart'; @@ -101,7 +102,17 @@ class MailboxView extends BaseMailboxView { padding: EdgeInsetsDirectional.only(end: responsiveUtils.isDesktop(context) ? 16 : 0), child: Column(children: [ if (!responsiveUtils.isDesktop(context)) - buildUserInformation(context), + Obx(() => UserInformationWidget( + userProfile: controller.mailboxDashBoardController.userProfile.value, + subtitle: AppLocalizations.of(context).manage_account, + onSubtitleClick: controller.mailboxDashBoardController.goToSettings, + border: const Border( + bottom: BorderSide( + color: AppColor.colorDividerHorizontal, + width: 0.5, + ) + ), + )), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)), AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context) ? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller) diff --git a/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart b/lib/features/mailbox/presentation/widgets/user_information_widget.dart similarity index 61% rename from lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart rename to lib/features/mailbox/presentation/widgets/user_information_widget.dart index 41dec792e..d4b1d1096 100644 --- a/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart +++ b/lib/features/mailbox/presentation/widgets/user_information_widget.dart @@ -7,39 +7,40 @@ import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get/get.dart'; import 'package:model/user/user_profile.dart'; import 'package:tmail_ui_user/features/base/widget/material_text_button.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; typedef OnSubtitleClick = void Function(); -class UserInformationWidgetBuilder extends StatelessWidget { - final ImagePaths _imagePaths; - final UserProfile? _userProfile; +class UserInformationWidget extends StatelessWidget { + final UserProfile? userProfile; final String? subtitle; final EdgeInsetsGeometry? titlePadding; final OnSubtitleClick? onSubtitleClick; final EdgeInsetsGeometry? padding; + final Border? border; - const UserInformationWidgetBuilder( - this._imagePaths, - this._userProfile, - { - Key? key, - this.subtitle, - this.titlePadding, - this.onSubtitleClick, - this.padding, - } - ) : super(key: key); + const UserInformationWidget({ + Key? key, + this.userProfile, + this.subtitle, + this.titlePadding, + this.onSubtitleClick, + this.padding, + this.border, + }) : super(key: key); @override Widget build(BuildContext context) { - return Padding( + final imagePaths = Get.find(); + return Container( padding: padding ?? const EdgeInsetsDirectional.only(start: 16, end: 4, top: 16, bottom: 16), + decoration: BoxDecoration(border: border), child: Row(children: [ (AvatarBuilder() - ..text(_userProfile != null ? _userProfile!.getAvatarText() : '') + ..text(userProfile != null ? userProfile!.getAvatarText() : '') ..backgroundColor(Colors.white) ..textColor(Colors.black) ..addBoxShadows([const BoxShadow( @@ -52,29 +53,31 @@ class UserInformationWidgetBuilder extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextOverflowBuilder( - _userProfile != null ? '${_userProfile?.email}' : '', + userProfile != null ? '${userProfile?.email}' : '', style: const TextStyle( fontSize: 17, color: AppColor.colorNameEmail, fontWeight: FontWeight.w600 ) ), - const SizedBox(height: 10), if (subtitle != null) - Transform( - transform: Matrix4.translationValues(-8.0, 0.0, 0.0), - child: MaterialTextButton( - label: AppLocalizations.of(context).manage_account, - onTap: onSubtitleClick, - borderRadius: 20, - padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8), - customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton), + Padding( + padding: const EdgeInsetsDirectional.only(top: 10), + child: Transform( + transform: Matrix4.translationValues(-8.0, 0.0, 0.0), + child: MaterialTextButton( + label: AppLocalizations.of(context).manage_account, + onTap: onSubtitleClick, + borderRadius: 20, + padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8), + customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton), + ), ), ) ])), if (PlatformInfo.isMobile) SvgPicture.asset( - DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icBack : _imagePaths.icCollapseFolder, + DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icBack : imagePaths.icCollapseFolder, fit: BoxFit.fill, colorFilter: AppColor.colorCollapseMailbox.asFilter() ), diff --git a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart index 5bd2a315c..ccd7e5cdb 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.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_utils.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/setting_first_level_tile_builder.dart'; @@ -20,9 +20,8 @@ class SettingsFirstLevelView extends GetWidget { Widget build(BuildContext context) { return SingleChildScrollView( child: Column(children: [ - Obx(() => UserInformationWidgetBuilder( - _imagePaths, - controller.manageAccountDashboardController.userProfile.value, + Obx(() => UserInformationWidget( + userProfile: controller.manageAccountDashboardController.userProfile.value, padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), titlePadding: const EdgeInsetsDirectional.only(start: 16))), Divider(