TF-985 Change BottomBar widget of EmailView

This commit is contained in:
dab246
2022-10-12 13:00:28 +07:00
committed by Dat H. Pham
parent 627fe8dbd3
commit f3358bb5d7
@@ -1,118 +1,90 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnPressEmailActionClick = void Function(EmailActionType emailActionType);
class BottomBarMailWidgetBuilder {
class BottomBarMailWidgetBuilder extends StatelessWidget {
static const double maxWidthBottomBar = 540;
final BuildContext _context;
final ImagePaths _imagePaths;
final ResponsiveUtils _responsiveUtils;
final PresentationEmail? _presentationEmail;
final PresentationEmail _presentationEmail;
final OnPressEmailActionClick? onPressEmailActionClick;
OnPressEmailActionClick? _onPressEmailActionClick;
BottomBarMailWidgetBuilder(
this._context,
this._imagePaths,
this._responsiveUtils,
const BottomBarMailWidgetBuilder(
this._presentationEmail,
);
{
Key? key,
this.onPressEmailActionClick
}
) : super(key: key);
void addOnPressEmailAction(OnPressEmailActionClick onPressEmailActionClick) {
_onPressEmailActionClick = onPressEmailActionClick;
}
@override
Widget build(BuildContext context) {
final imagePaths = Get.find<ImagePaths>();
final responsiveUtils = Get.find<ResponsiveUtils>();
Widget build() {
return Container(
key: const Key('bottom_bar_messenger_widget'),
alignment: Alignment.center,
color: Colors.white,
child: MediaQuery(
data: const MediaQueryData(padding: EdgeInsets.zero),
child: _presentationEmail != null
? _buildListOptionButton(_presentationEmail!)
: const SizedBox.shrink()
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
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(
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(
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(
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())
]
)
);
}
Widget _buildListOptionButton(PresentationEmail presentationEmail) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (presentationEmail.numberOfAllEmailAddress() > 1)
Expanded(child: (ButtonBuilder(_imagePaths.icReplyAll)
..key(const Key('button_reply_all_message'))
..size(15)
..paddingIcon(EdgeInsets.only(
top: _responsiveUtils.isMobile(_context) ? 10 : 16,
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() {
if (_onPressEmailActionClick != null) {
_onPressEmailActionClick!(EmailActionType.replyAll);
}})
..text(AppLocalizations.of(_context).reply_all, isVertical: _responsiveUtils.isMobile(_context)))
.build()),
Expanded(child: (ButtonBuilder(_imagePaths.icReply)
..key(const Key('button_reply_message'))
..size(20)
..paddingIcon(EdgeInsets.only(
top: _responsiveUtils.isMobile(_context) ? 10 : 16,
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() {
if (_onPressEmailActionClick != null) {
_onPressEmailActionClick!(EmailActionType.reply);
}})
..text(AppLocalizations.of(_context).reply, isVertical: _responsiveUtils.isMobile(_context)))
.build()),
Expanded(child: (ButtonBuilder(_imagePaths.icForward)
..key(const Key('button_forward_message'))
..size(20)
..paddingIcon(EdgeInsets.only(
top: _responsiveUtils.isMobile(_context) ? 10 : 16,
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() {
if (_onPressEmailActionClick != null) {
_onPressEmailActionClick!(EmailActionType.forward);
}})
..text(AppLocalizations.of(_context).forward, isVertical: _responsiveUtils.isMobile(_context)))
.build()),
if (_responsiveUtils.mailboxDashboardOnlyHasEmailView(_context))
Expanded(child: (ButtonBuilder(_imagePaths.icNewMessage)
..key(const Key('button_new_message'))
..size(20)
..paddingIcon(EdgeInsets.only(
top: _responsiveUtils.isMobile(_context) ? 10 : 16,
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16,
color: AppColor.colorTextButton))
..onPressActionClick(() {
if (_onPressEmailActionClick != null) {
_onPressEmailActionClick!(EmailActionType.compose);
}})
..text(AppLocalizations.of(_context).new_message, isVertical: _responsiveUtils.isMobile(_context)))
.build())
]
);
}
}