TF-2078 Add bottom border for UserInformationWidget
(cherry picked from commit ef96188b2b5fc3c570615ce9f64ad979e1cf9b1c)
This commit is contained in:
@@ -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)
|
||||
|
||||
+30
-27
@@ -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
-4
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user