From 0824e25910d6b227b30951bcd68ae6c559f9a975 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 7 Jul 2023 13:55:32 +0700 Subject: [PATCH] TF-1960 Fix alignment arrow button in RTL mode (cherry picked from commit c3101d1710874d295eac6821853bc72095022446) --- .../views/button/button_builder.dart | 2 +- .../email/presentation/email_view.dart | 5 ++- .../widgets/app_bar_mail_widget_builder.dart | 25 ++++++----- .../menu/manage_account_menu_view.dart | 43 ++++++++----------- 4 files changed, 37 insertions(+), 38 deletions(-) diff --git a/core/lib/presentation/views/button/button_builder.dart b/core/lib/presentation/views/button/button_builder.dart index 9d11e9975..5456d2d14 100644 --- a/core/lib/presentation/views/button/button_builder.dart +++ b/core/lib/presentation/views/button/button_builder.dart @@ -36,7 +36,7 @@ class ButtonBuilder { _context = context; } - void size(double size) { + void size(double? size) { _size = size; } diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 6f8ad6533..b8bf4a6a5 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -8,6 +8,7 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_w import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; import 'package:core/presentation/views/html_viewer/html_viewer_controller_for_web.dart'; import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/platform_info.dart'; import 'package:filesize/filesize.dart'; import 'package:flutter/cupertino.dart'; @@ -195,7 +196,7 @@ class EmailView extends GetWidget { return [ buildIconWeb( icon: SvgPicture.asset( - imagePaths.icNewer, + DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icOlder : imagePaths.icNewer, colorFilter: controller.emailSupervisorController.nextEmailActivated ? AppColor.primaryColor.asFilter() : AppColor.colorAttachmentIcon.asFilter(), @@ -206,7 +207,7 @@ class EmailView extends GetWidget { onTap: controller.emailSupervisorController.moveToNextEmail), buildIconWeb( icon: SvgPicture.asset( - imagePaths.icOlder, + DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icNewer : imagePaths.icOlder, width: IconUtils.defaultIconSize, height: IconUtils.defaultIconSize, colorFilter: controller.emailSupervisorController.previousEmailActivated diff --git a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart index ca64f4f4d..551846e49 100644 --- a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart +++ b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart @@ -1,12 +1,12 @@ import 'package:core/core.dart'; +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:model/model.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; -import 'package:tmail_ui_user/main/utils/app_utils.dart'; typedef OnBackActionClick = void Function(); typedef OnEmailActionClick = void Function(PresentationEmail, EmailActionType); @@ -58,20 +58,23 @@ class AppBarMailWidgetBuilder extends StatelessWidget { child: Container( color: Colors.transparent, height: 32, - padding: const EdgeInsets.symmetric(horizontal: 8), + padding: DirectionUtils.isDirectionRTLByLanguage(context) + ? const EdgeInsetsDirectional.only(end: 10) + : const EdgeInsets.symmetric(horizontal: 8), child: Row(mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - _imagePaths.icBack, - width: 14, - height: 14, - colorFilter: AppColor.colorTextButton.asFilter(), - fit: BoxFit.fill), + DirectionUtils.isDirectionRTLByLanguage(context) + ? _imagePaths.icArrowRight + : _imagePaths.icBack, + width: DirectionUtils.isDirectionRTLByLanguage(context) ? null : 16, + height: DirectionUtils.isDirectionRTLByLanguage(context) ? null : 16, + colorFilter: AppColor.colorTextButton.asFilter(), + fit: BoxFit.fill), if (!isSearchIsRunning) Container( - margin: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 8, - right: AppUtils.isDirectionRTL(context) ? 8 : 0, - ), + margin: DirectionUtils.isDirectionRTLByLanguage(context) + ? null + : const EdgeInsetsDirectional.only(start: 8), constraints: BoxConstraints( maxWidth: _responsiveUtils.getSizeScreenWidth(context) - 250), child: Text( diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart index 4194eda73..2d4fb0a51 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart @@ -1,5 +1,6 @@ import 'package:core/core.dart'; +import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -58,12 +59,8 @@ class ManageAccountMenuView extends GetWidget { color: _responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 20, - right: AppUtils.isDirectionRTL(context) ? 20 : 0, - top: 24 - ), - child: (ButtonBuilder(_imagePaths.icBack) + padding: const EdgeInsetsDirectional.only(start: 20, top: 24), + child: (ButtonBuilder(DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icArrowRight : _imagePaths.icBack) ..key(const Key('button_back')) ..decoration(BoxDecoration(borderRadius: BorderRadius.circular(10), color: AppColor.colorBgMailboxSelected)) ..paddingIcon(EdgeInsets.only( @@ -72,31 +69,32 @@ class ManageAccountMenuView extends GetWidget { )) ..iconColor(AppColor.colorTextButton) ..maxWidth(100) - ..size(16) + ..size(DirectionUtils.isDirectionRTLByLanguage(context) ? null : 16) ..radiusSplash(10) - ..padding(const EdgeInsets.symmetric(vertical: 10)) + ..padding(DirectionUtils.isDirectionRTLByLanguage(context) + ? const EdgeInsets.symmetric(vertical: 5) + : const EdgeInsets.symmetric(vertical: 10)) ..textStyle(const TextStyle(fontSize: 15, color: AppColor.colorTextButton, fontWeight: FontWeight.normal)) ..onPressActionClick(() => controller.backToMailboxDashBoard(context)) ..text(AppLocalizations.of(context).back, isVertical: false)) .build()), Padding( - padding: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 32, - right: AppUtils.isDirectionRTL(context) ? 32 : 0, - top: 20 - ), - child: Text( - AppLocalizations.of(context).manage_account, - style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))), + padding: const EdgeInsetsDirectional.only(start: 32, top: 20), + child: Text( + AppLocalizations.of(context).manage_account, + style: const TextStyle( + color: Colors.black, + fontWeight: FontWeight.bold, + fontSize: 17 + ) + ) + ), const SizedBox(height: 12), Obx(() { if (controller.listAccountMenuItem.isNotEmpty) { return ListView.builder( key: const Key('list_manage_account_menu_item'), - padding: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 8 : 16, - right: AppUtils.isDirectionRTL(context) ? 16 : 8 - ), + padding: const EdgeInsetsDirectional.only(start: 16, end: 8), shrinkWrap: true, itemCount: controller.listAccountMenuItem.length, itemBuilder: (context, index) => Obx(() { @@ -116,10 +114,7 @@ class ManageAccountMenuView extends GetWidget { padding: EdgeInsets.symmetric(vertical: 16), child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)), Padding( - padding: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 32, - right: AppUtils.isDirectionRTL(context) ? 32 : 0, - ), + padding: const EdgeInsetsDirectional.only(start: 32), child: InkWell( onTap: () { controller.dashBoardController.logout(