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:core/core.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnPressEmailActionClick = void Function(EmailActionType emailActionType); typedef OnPressEmailActionClick = void Function(EmailActionType emailActionType);
class BottomBarMailWidgetBuilder { class BottomBarMailWidgetBuilder extends StatelessWidget {
static const double maxWidthBottomBar = 540; static const double maxWidthBottomBar = 540;
final BuildContext _context; final PresentationEmail _presentationEmail;
final ImagePaths _imagePaths; final OnPressEmailActionClick? onPressEmailActionClick;
final ResponsiveUtils _responsiveUtils;
final PresentationEmail? _presentationEmail;
OnPressEmailActionClick? _onPressEmailActionClick; const BottomBarMailWidgetBuilder(
BottomBarMailWidgetBuilder(
this._context,
this._imagePaths,
this._responsiveUtils,
this._presentationEmail, this._presentationEmail,
); {
Key? key,
this.onPressEmailActionClick
}
) : super(key: key);
void addOnPressEmailAction(OnPressEmailActionClick onPressEmailActionClick) { @override
_onPressEmailActionClick = onPressEmailActionClick; Widget build(BuildContext context) {
} final imagePaths = Get.find<ImagePaths>();
final responsiveUtils = Get.find<ResponsiveUtils>();
Widget build() {
return Container( return Container(
key: const Key('bottom_bar_messenger_widget'),
alignment: Alignment.center, alignment: Alignment.center,
color: Colors.white, color: Colors.white,
child: MediaQuery( child: Row(
data: const MediaQueryData(padding: EdgeInsets.zero), mainAxisAlignment: MainAxisAlignment.center,
child: _presentationEmail != null crossAxisAlignment: CrossAxisAlignment.center,
? _buildListOptionButton(_presentationEmail!) children: [
: const SizedBox.shrink() 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())
]
);
}
} }