TF-1714 Change ButtonBuilder to TMailButton widget

(cherry picked from commit fd536ff648370a60ef89d4428fedd949a3e62ae7)
This commit is contained in:
dab246
2023-08-08 19:17:36 +07:00
committed by Dat Vu
parent 195ef578db
commit 632b9c67d6
19 changed files with 641 additions and 737 deletions
@@ -1,7 +1,12 @@
import 'package:core/core.dart';
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/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/model.dart';
import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnPressEmailActionClick = void Function(EmailActionType emailActionType);
@@ -27,69 +32,96 @@ class BottomBarMailWidgetBuilder extends StatelessWidget {
final responsiveUtils = Get.find<ResponsiveUtils>();
return Container(
alignment: Alignment.center,
decoration: responsiveUtils.isWebDesktop(context)
? const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(20),
bottomLeft: Radius.circular(20)))
: const BoxDecoration(color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
decoration: const BoxDecoration(
border: Border(
top: BorderSide(
color: AppColor.colorDividerHorizontal,
width: 0.5,
)
),
),
child: IntrinsicHeight(
child: Row(
children: [
if (_presentationEmail.numberOfAllEmailAddress() > 1)
Expanded(child: (ButtonBuilder(imagePaths.icReplyAll)
..key(const Key('button_reply_all_message'))
..size(15)
..radiusSplash(0)
..padding(const EdgeInsets.only(top: 5, bottom: 8))
..textStyle(TextStyle(
Expanded(
child: TMailButtonWidget(
key: const Key('reply_all_emails_button'),
text: AppLocalizations.of(context).reply_all,
icon: imagePaths.icReplyAll,
borderRadius: 0,
iconSize: 15,
textAlign: TextAlign.center,
flexibleText: true,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent,
textStyle: TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() =>onPressEmailActionClick?.call(EmailActionType.replyAll))
..text(AppLocalizations.of(context).reply_all,
isVertical: responsiveUtils.isPortraitMobile(context)))
.build()),
Expanded(child: (ButtonBuilder(imagePaths.icReply)
..key(const Key('button_reply_message'))
..size(20)
..radiusSplash(0)
..padding(const EdgeInsets.only(top: 5, bottom: 8))
..textStyle(TextStyle(
color: AppColor.colorTextButton
),
verticalDirection: responsiveUtils.isPortraitMobile(context),
onTapActionCallback: () => onPressEmailActionClick?.call(EmailActionType.replyAll),
),
),
Expanded(
child: TMailButtonWidget(
key: const Key('reply_email_button'),
text: AppLocalizations.of(context).reply,
icon: imagePaths.icReply,
borderRadius: 0,
iconSize: 20,
textAlign: TextAlign.center,
flexibleText: true,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent,
textStyle: TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.reply))
..text(AppLocalizations.of(context).reply,
isVertical: responsiveUtils.isPortraitMobile(context)))
.build()),
Expanded(child: (ButtonBuilder(imagePaths.icForward)
..key(const Key('button_forward_message'))
..size(20)
..radiusSplash(0)
..padding(const EdgeInsets.only(top: 5, bottom: 8))
..textStyle(TextStyle(
color: AppColor.colorTextButton
),
verticalDirection: responsiveUtils.isPortraitMobile(context),
onTapActionCallback: () => onPressEmailActionClick?.call(EmailActionType.reply),
),
),
Expanded(
child: TMailButtonWidget(
key: const Key('forward_email_button'),
text: AppLocalizations.of(context).forward,
icon: imagePaths.icForward,
borderRadius: 0,
iconSize: 20,
textAlign: TextAlign.center,
flexibleText: true,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent,
textStyle: TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.forward))
..text(AppLocalizations.of(context).forward,
isVertical: responsiveUtils.isPortraitMobile(context)))
.build()),
if (responsiveUtils.mailboxDashboardOnlyHasEmailView(context))
Expanded(child: (ButtonBuilder(imagePaths.icNewMessage)
..key(const Key('button_new_message'))
..size(20)
..radiusSplash(0)
..padding(const EdgeInsets.only(top: 5, bottom: 8))
..textStyle(TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.compose))
..text(AppLocalizations.of(context).new_message,
isVertical: responsiveUtils.isPortraitMobile(context)))
.build())
color: AppColor.colorTextButton
),
verticalDirection: responsiveUtils.isPortraitMobile(context),
onTapActionCallback: () => onPressEmailActionClick?.call(EmailActionType.forward),
),
),
Expanded(
child: TMailButtonWidget(
key: const Key('compose_new_email_button'),
text: AppLocalizations.of(context).new_message,
icon: imagePaths.icNewMessage,
borderRadius: 0,
iconSize: 20,
textAlign: TextAlign.center,
flexibleText: true,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent,
textStyle: TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton
),
verticalDirection: responsiveUtils.isPortraitMobile(context),
onTapActionCallback: () => onPressEmailActionClick?.call(EmailActionType.compose),
),
),
]
),
)
);
}