TF-3410 Use TextTheme apply almost text style for text widget
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -20,7 +20,9 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
backgroundColor: controller.responsiveUtils.isWebDesktop(context)
|
||||
? AppColor.colorBgDesktop
|
||||
: Colors.white,
|
||||
body: SafeArea(right: false, bottom: false,
|
||||
child: Column(
|
||||
children: [
|
||||
@@ -75,28 +77,30 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
)
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Obx(() {
|
||||
if (controller.listAccountMenuItem.isNotEmpty) {
|
||||
return ListView.builder(
|
||||
key: const Key('list_manage_account_menu_item'),
|
||||
padding: const EdgeInsetsDirectional.only(start: 16, end: 8),
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAccountMenuItem.length,
|
||||
itemBuilder: (context, index) => Obx(() {
|
||||
final menuItem = controller.listAccountMenuItem[index];
|
||||
return AccountMenuItemTileBuilder(
|
||||
imagePaths: controller.imagePaths,
|
||||
responsiveUtils: controller.responsiveUtils,
|
||||
menuItem: menuItem,
|
||||
menuItemSelected: controller.dashBoardController.accountMenuItemSelected.value,
|
||||
onSelectAccountMenuItemAction: controller.selectAccountMenuItem
|
||||
);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
Flexible(
|
||||
child: Obx(() {
|
||||
if (controller.listAccountMenuItem.isNotEmpty) {
|
||||
return ListView.builder(
|
||||
key: const Key('list_manage_account_menu_item'),
|
||||
padding: const EdgeInsetsDirectional.only(start: 16, end: 8),
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAccountMenuItem.length,
|
||||
itemBuilder: (context, index) => Obx(() {
|
||||
final menuItem = controller.listAccountMenuItem[index];
|
||||
return AccountMenuItemTileBuilder(
|
||||
imagePaths: controller.imagePaths,
|
||||
responsiveUtils: controller.responsiveUtils,
|
||||
menuItem: menuItem,
|
||||
menuItemSelected: controller.dashBoardController.accountMenuItemSelected.value,
|
||||
onSelectAccountMenuItemAction: controller.selectAccountMenuItem
|
||||
);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 16),
|
||||
child: Divider()),
|
||||
@@ -145,6 +149,7 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
),
|
||||
)),
|
||||
Container(
|
||||
color: AppColor.colorBgDesktop,
|
||||
width: double.infinity,
|
||||
alignment: controller.responsiveUtils.isDesktop(context)
|
||||
? AlignmentDirectional.centerStart
|
||||
@@ -153,12 +158,6 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
child: ApplicationVersionWidget(
|
||||
padding: EdgeInsets.zero,
|
||||
title: '${AppLocalizations.of(context).version.toLowerCase()} ',
|
||||
textStyle: Theme.of(context).textTheme.bodySmall?.copyWith(
|
||||
fontSize: 13,
|
||||
height: 16 / 13,
|
||||
color: AppColor.steelGray400,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
+9
-11
@@ -2,8 +2,6 @@ import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.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';
|
||||
@@ -22,8 +20,8 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
child: Column(children: [
|
||||
Obx(() => UserInformationWidget(
|
||||
userName: controller.manageAccountDashboardController.accountId.value != null
|
||||
? UserName(controller.manageAccountDashboardController.sessionCurrent!.getOwnEmailAddress())
|
||||
: null,
|
||||
? controller.manageAccountDashboardController.getOwnEmailAddress()
|
||||
: '',
|
||||
padding: SettingsUtils.getPaddingInFirstLevel(context, controller.responsiveUtils),
|
||||
titlePadding: const EdgeInsetsDirectional.only(start: 16))),
|
||||
Divider(
|
||||
@@ -48,7 +46,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
|
||||
return Column(children: [
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.emailRules.getName(context),
|
||||
AccountMenuItem.emailRules.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.emailRules.getIcon(controller.imagePaths),
|
||||
subtitle: AppLocalizations.of(context).emailRuleSettingExplanation,
|
||||
() => controller.selectSettings(AccountMenuItem.emailRules)
|
||||
@@ -68,7 +66,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
if (controller.manageAccountDashboardController.isServerSettingsCapabilitySupported) {
|
||||
return Column(children: [
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.preferences.getName(context),
|
||||
AccountMenuItem.preferences.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.preferences.getIcon(controller.imagePaths),
|
||||
subtitle: AppLocalizations.of(context).emailReadReceiptsSettingExplanation,
|
||||
() => controller.selectSettings(AccountMenuItem.preferences)
|
||||
@@ -88,7 +86,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
if (controller.manageAccountDashboardController.isForwardCapabilitySupported) {
|
||||
return Column(children: [
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.forward.getName(context),
|
||||
AccountMenuItem.forward.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.forward.getIcon(controller.imagePaths),
|
||||
subtitle: AppLocalizations.of(context).forwardingSettingExplanation,
|
||||
() => controller.selectSettings(AccountMenuItem.forward)
|
||||
@@ -108,7 +106,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
if (controller.manageAccountDashboardController.isVacationCapabilitySupported) {
|
||||
return Column(children: [
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.vacation.getName(context),
|
||||
AccountMenuItem.vacation.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.vacation.getIcon(controller.imagePaths),
|
||||
subtitle: AppLocalizations.of(context).vacationSettingExplanation,
|
||||
() => controller.selectSettings(AccountMenuItem.vacation)
|
||||
@@ -125,7 +123,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
}
|
||||
}),
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.mailboxVisibility.getName(context),
|
||||
AccountMenuItem.mailboxVisibility.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.mailboxVisibility.getIcon(controller.imagePaths),
|
||||
subtitle: AppLocalizations.of(context).folderVisibilitySubtitle,
|
||||
() => controller.selectSettings(AccountMenuItem.mailboxVisibility)
|
||||
@@ -137,7 +135,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||
),
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.languageAndRegion.getName(context),
|
||||
AccountMenuItem.languageAndRegion.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.languageAndRegion.getIcon(controller.imagePaths),
|
||||
() => controller.selectSettings(AccountMenuItem.languageAndRegion)
|
||||
),
|
||||
@@ -190,7 +188,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
),
|
||||
),
|
||||
SettingFirstLevelTileBuilder(
|
||||
AccountMenuItem.contactSupport.getName(context),
|
||||
AccountMenuItem.contactSupport.getName(AppLocalizations.of(context)),
|
||||
AccountMenuItem.contactSupport.getIcon(controller.imagePaths),
|
||||
() => controller.onGetHelpOrReportBug(
|
||||
contactSupportCapability!,
|
||||
|
||||
@@ -5,11 +5,9 @@ import 'package:core/utils/direction_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/banner_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/widgets/forward_warning_banner.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_controller.dart';
|
||||
@@ -70,14 +68,6 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
Obx(() {
|
||||
if (controller.manageAccountDashboardController.forwardWarningBannerState.value == BannerState.enabled &&
|
||||
controller.manageAccountDashboardController.accountMenuItemSelected.value == AccountMenuItem.forward) {
|
||||
return ForwardWarningBanner();
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
Expanded(child: _bodySettingsScreen())
|
||||
]
|
||||
);
|
||||
@@ -152,7 +142,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
),
|
||||
),
|
||||
Expanded(child: Text(
|
||||
controller.manageAccountDashboardController.accountMenuItemSelected.value.getName(context),
|
||||
controller.manageAccountDashboardController.accountMenuItemSelected.value.getName(AppLocalizations.of(context)),
|
||||
maxLines: 1,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
@@ -189,7 +179,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
return Obx(() {
|
||||
switch(controller.manageAccountDashboardController.accountMenuItemSelected.value) {
|
||||
case AccountMenuItem.profiles:
|
||||
return ProfilesView();
|
||||
return ProfilesView(responsiveUtils: controller.responsiveUtils);
|
||||
case AccountMenuItem.languageAndRegion:
|
||||
return const LanguageAndRegionView();
|
||||
case AccountMenuItem.emailRules:
|
||||
|
||||
@@ -2,9 +2,10 @@ import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class SettingsUtils {
|
||||
SettingsUtils._();
|
||||
|
||||
static double getHorizontalPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isMobile(context)) {
|
||||
return 16;
|
||||
@@ -54,22 +55,34 @@ class SettingsUtils {
|
||||
}
|
||||
}
|
||||
|
||||
static BoxDecoration? getBoxDecorationForContent(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
static BoxDecoration? getBoxDecorationForContent(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
{
|
||||
Color backgroundColor = Colors.white
|
||||
}
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
border: Border.all(color: AppColor.colorBorderSettingContentWeb, width: 1),
|
||||
color: Colors.white);
|
||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||
color: backgroundColor,
|
||||
);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static Color? getContentBackgroundColor(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
static Color? getContentBackgroundColor(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
{
|
||||
Color backgroundColor = Colors.white
|
||||
}
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return null;
|
||||
} else {
|
||||
return Colors.white;
|
||||
return backgroundColor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,58 +94,33 @@ class SettingsUtils {
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingListRecipientForwarding(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
|
||||
static BoxDecoration? getBoxDecorationForListRecipient(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
return BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: AppColor.colorBorderSettingContentWeb, width: 1),
|
||||
color: Colors.white);
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingTitleHeaderForwarding(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingKeepLocalSwitchButtonForwarding(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 18, vertical: 14);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(14);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 34, vertical: 14);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingInputRecipientForwarding(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getMarginViewForForwardSettingDetails(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
static EdgeInsetsGeometry getSettingContentPadding(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return const EdgeInsets.all(16);
|
||||
} else if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsetsGeometry getSettingContentWithoutHeaderPadding(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return EdgeInsets.zero;
|
||||
} else if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,30 +132,29 @@ class SettingsUtils {
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingHeaderSetting(BuildContext context) {
|
||||
if (AppUtils.isDirectionRTL(context)) {
|
||||
return const EdgeInsets.only(top: 25, bottom: 25, right: 32);
|
||||
} else {
|
||||
return const EdgeInsets.only(top: 25, bottom: 25, left: 32);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingRightHeaderSetting(BuildContext context) {
|
||||
if (AppUtils.isDirectionRTL(context)) {
|
||||
return const EdgeInsets.only(right: 48, top: 16, bottom: 10, left: 10);
|
||||
} else {
|
||||
return const EdgeInsets.only(right: 10, top: 16, bottom: 10, left: 48);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsets getPaddingAlwaysReadReceiptSetting(
|
||||
static EdgeInsetsGeometry getPreferencesSettingPadding(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return const EdgeInsets.all(24);
|
||||
} else {
|
||||
return EdgeInsets.zero;
|
||||
return const EdgeInsetsDirectional.symmetric(vertical: 8);
|
||||
}
|
||||
}
|
||||
|
||||
static EdgeInsetsGeometry getForwardBannerPadding(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
) {
|
||||
if (responsiveUtils.isWebDesktop(context)) {
|
||||
return const EdgeInsetsDirectional.only(start: 16, end: 16, top: 16);
|
||||
} else if (responsiveUtils.isPortraitMobile(context)) {
|
||||
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
|
||||
} else if (responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const EdgeInsets.all(12);
|
||||
} else {
|
||||
return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-6
@@ -1,9 +1,11 @@
|
||||
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:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
typedef OnSelectAccountMenuItemAction = void Function(AccountMenuItem);
|
||||
|
||||
@@ -53,12 +55,8 @@ class AccountMenuItemTileBuilder extends StatelessWidget {
|
||||
fit: BoxFit.fill),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(
|
||||
menuItem.getName(context),
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 15,
|
||||
color: Colors.black
|
||||
)
|
||||
menuItem.getName(AppLocalizations.of(context)),
|
||||
style: ThemeUtils.textStyleBodyBody3(color: Colors.black)
|
||||
))
|
||||
]),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user