TF-2078 Add bottom border for UserInformationWidget

(cherry picked from commit ef96188b2b5fc3c570615ce9f64ad979e1cf9b1c)
This commit is contained in:
dab246
2023-08-10 19:04:35 +07:00
committed by Dat Vu
parent 500767ce7c
commit c938cc3d74
5 changed files with 57 additions and 47 deletions
@@ -1,4 +1,3 @@
import 'package:core/presentation/extensions/color_extension.dart';
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/material.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/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/mailbox_controller.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/widgets/user_information_widget_builder.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
abstract class BaseMailboxView extends GetWidget<MailboxController> abstract class BaseMailboxView extends GetWidget<MailboxController>
with with
@@ -18,15 +15,4 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
final responsiveUtils = Get.find<ResponsiveUtils>(); final responsiveUtils = Get.find<ResponsiveUtils>();
final imagePaths = Get.find<ImagePaths>(); final imagePaths = Get.find<ImagePaths>();
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)
]);
}
} }
@@ -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_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/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/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/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.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/localizations/app_localizations.dart';
@@ -166,7 +167,17 @@ class MailboxView extends BaseMailboxView {
if (controller.isSelectionEnabled() && responsiveUtils.isLandscapeMobile(context)) { if (controller.isSelectionEnabled() && responsiveUtils.isLandscapeMobile(context)) {
return const SizedBox.shrink(); 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)), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
AppConfig.appGridDashboardAvailable AppConfig.appGridDashboardAvailable
@@ -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_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_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/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/features/quotas/presentation/quotas_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_config.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), padding: EdgeInsetsDirectional.only(end: responsiveUtils.isDesktop(context) ? 16 : 0),
child: Column(children: [ child: Column(children: [
if (!responsiveUtils.isDesktop(context)) 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)), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context) AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context)
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller) ? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
@@ -7,39 +7,40 @@ import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:model/user/user_profile.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/features/base/widget/material_text_button.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnSubtitleClick = void Function(); typedef OnSubtitleClick = void Function();
class UserInformationWidgetBuilder extends StatelessWidget { class UserInformationWidget extends StatelessWidget {
final ImagePaths _imagePaths; final UserProfile? userProfile;
final UserProfile? _userProfile;
final String? subtitle; final String? subtitle;
final EdgeInsetsGeometry? titlePadding; final EdgeInsetsGeometry? titlePadding;
final OnSubtitleClick? onSubtitleClick; final OnSubtitleClick? onSubtitleClick;
final EdgeInsetsGeometry? padding; final EdgeInsetsGeometry? padding;
final Border? border;
const UserInformationWidgetBuilder( const UserInformationWidget({
this._imagePaths, Key? key,
this._userProfile, this.userProfile,
{ this.subtitle,
Key? key, this.titlePadding,
this.subtitle, this.onSubtitleClick,
this.titlePadding, this.padding,
this.onSubtitleClick, this.border,
this.padding, }) : super(key: key);
}
) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( final imagePaths = Get.find<ImagePaths>();
return Container(
padding: padding ?? const EdgeInsetsDirectional.only(start: 16, end: 4, top: 16, bottom: 16), padding: padding ?? const EdgeInsetsDirectional.only(start: 16, end: 4, top: 16, bottom: 16),
decoration: BoxDecoration(border: border),
child: Row(children: [ child: Row(children: [
(AvatarBuilder() (AvatarBuilder()
..text(_userProfile != null ? _userProfile!.getAvatarText() : '') ..text(userProfile != null ? userProfile!.getAvatarText() : '')
..backgroundColor(Colors.white) ..backgroundColor(Colors.white)
..textColor(Colors.black) ..textColor(Colors.black)
..addBoxShadows([const BoxShadow( ..addBoxShadows([const BoxShadow(
@@ -52,29 +53,31 @@ class UserInformationWidgetBuilder extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
TextOverflowBuilder( TextOverflowBuilder(
_userProfile != null ? '${_userProfile?.email}' : '', userProfile != null ? '${userProfile?.email}' : '',
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 17,
color: AppColor.colorNameEmail, color: AppColor.colorNameEmail,
fontWeight: FontWeight.w600 fontWeight: FontWeight.w600
) )
), ),
const SizedBox(height: 10),
if (subtitle != null) if (subtitle != null)
Transform( Padding(
transform: Matrix4.translationValues(-8.0, 0.0, 0.0), padding: const EdgeInsetsDirectional.only(top: 10),
child: MaterialTextButton( child: Transform(
label: AppLocalizations.of(context).manage_account, transform: Matrix4.translationValues(-8.0, 0.0, 0.0),
onTap: onSubtitleClick, child: MaterialTextButton(
borderRadius: 20, label: AppLocalizations.of(context).manage_account,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8), onTap: onSubtitleClick,
customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton), borderRadius: 20,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8),
customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton),
),
), ),
) )
])), ])),
if (PlatformInfo.isMobile) if (PlatformInfo.isMobile)
SvgPicture.asset( SvgPicture.asset(
DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icBack : _imagePaths.icCollapseFolder, DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icBack : imagePaths.icCollapseFolder,
fit: BoxFit.fill, fit: BoxFit.fill,
colorFilter: AppColor.colorCollapseMailbox.asFilter() colorFilter: AppColor.colorCollapseMailbox.asFilter()
), ),
@@ -3,7 +3,7 @@ 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/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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/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';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/setting_first_level_tile_builder.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<SettingsController> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column(children: [ child: Column(children: [
Obx(() => UserInformationWidgetBuilder( Obx(() => UserInformationWidget(
_imagePaths, userProfile: controller.manageAccountDashboardController.userProfile.value,
controller.manageAccountDashboardController.userProfile.value,
padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils),
titlePadding: const EdgeInsetsDirectional.only(start: 16))), titlePadding: const EdgeInsetsDirectional.only(start: 16))),
Divider( Divider(