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/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<MailboxController>
with
@@ -18,15 +15,4 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
final responsiveUtils = Get.find<ResponsiveUtils>();
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_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
@@ -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)
@@ -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<ImagePaths>();
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()
),
@@ -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<SettingsController> {
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(