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,
void addOnPressEmailAction(OnPressEmailActionClick onPressEmailActionClick) { this.onPressEmailActionClick
_onPressEmailActionClick = onPressEmailActionClick;
} }
) : super(key: key);
@override
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),
child: _presentationEmail != null
? _buildListOptionButton(_presentationEmail!)
: const SizedBox.shrink()
)
);
}
Widget _buildListOptionButton(PresentationEmail presentationEmail) {
return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
if (presentationEmail.numberOfAllEmailAddress() > 1) if (_presentationEmail.numberOfAllEmailAddress() > 1)
Expanded(child: (ButtonBuilder(_imagePaths.icReplyAll) Expanded(child: (ButtonBuilder(imagePaths.icReplyAll)
..key(const Key('button_reply_all_message')) ..key(const Key('button_reply_all_message'))
..size(15) ..size(15)
..paddingIcon(EdgeInsets.only( ..radiusSplash(0)
top: _responsiveUtils.isMobile(_context) ? 10 : 16, ..padding(const EdgeInsets.only(top: 5, bottom: 8))
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle( ..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16, fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton)) color: AppColor.colorTextButton))
..onPressActionClick(() { ..onPressActionClick(() =>onPressEmailActionClick?.call(EmailActionType.replyAll))
if (_onPressEmailActionClick != null) { ..text(AppLocalizations.of(context).reply_all,
_onPressEmailActionClick!(EmailActionType.replyAll); isVertical: responsiveUtils.isPortraitMobile(context)))
}})
..text(AppLocalizations.of(_context).reply_all, isVertical: _responsiveUtils.isMobile(_context)))
.build()), .build()),
Expanded(child: (ButtonBuilder(_imagePaths.icReply) Expanded(child: (ButtonBuilder(imagePaths.icReply)
..key(const Key('button_reply_message')) ..key(const Key('button_reply_message'))
..size(20) ..size(20)
..paddingIcon(EdgeInsets.only( ..radiusSplash(0)
top: _responsiveUtils.isMobile(_context) ? 10 : 16, ..padding(const EdgeInsets.only(top: 5, bottom: 8))
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle( ..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16, fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton)) color: AppColor.colorTextButton))
..onPressActionClick(() { ..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.reply))
if (_onPressEmailActionClick != null) { ..text(AppLocalizations.of(context).reply,
_onPressEmailActionClick!(EmailActionType.reply); isVertical: responsiveUtils.isPortraitMobile(context)))
}})
..text(AppLocalizations.of(_context).reply, isVertical: _responsiveUtils.isMobile(_context)))
.build()), .build()),
Expanded(child: (ButtonBuilder(_imagePaths.icForward) Expanded(child: (ButtonBuilder(imagePaths.icForward)
..key(const Key('button_forward_message')) ..key(const Key('button_forward_message'))
..size(20) ..size(20)
..paddingIcon(EdgeInsets.only( ..radiusSplash(0)
top: _responsiveUtils.isMobile(_context) ? 10 : 16, ..padding(const EdgeInsets.only(top: 5, bottom: 8))
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle( ..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16, fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton)) color: AppColor.colorTextButton))
..onPressActionClick(() { ..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.forward))
if (_onPressEmailActionClick != null) { ..text(AppLocalizations.of(context).forward,
_onPressEmailActionClick!(EmailActionType.forward); isVertical: responsiveUtils.isPortraitMobile(context)))
}})
..text(AppLocalizations.of(_context).forward, isVertical: _responsiveUtils.isMobile(_context)))
.build()), .build()),
if (_responsiveUtils.mailboxDashboardOnlyHasEmailView(_context)) if (responsiveUtils.mailboxDashboardOnlyHasEmailView(context))
Expanded(child: (ButtonBuilder(_imagePaths.icNewMessage) Expanded(child: (ButtonBuilder(imagePaths.icNewMessage)
..key(const Key('button_new_message')) ..key(const Key('button_new_message'))
..size(20) ..size(20)
..paddingIcon(EdgeInsets.only( ..radiusSplash(0)
top: _responsiveUtils.isMobile(_context) ? 10 : 16, ..padding(const EdgeInsets.only(top: 5, bottom: 8))
bottom: _responsiveUtils.isMobile(_context) ? 8 : 16,
right: 5))
..textStyle(TextStyle( ..textStyle(TextStyle(
fontSize: _responsiveUtils.isMobile(_context) ? 10 : 16, fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton)) color: AppColor.colorTextButton))
..onPressActionClick(() { ..onPressActionClick(() => onPressEmailActionClick?.call(EmailActionType.compose))
if (_onPressEmailActionClick != null) { ..text(AppLocalizations.of(context).new_message,
_onPressEmailActionClick!(EmailActionType.compose); isVertical: responsiveUtils.isPortraitMobile(context)))
}})
..text(AppLocalizations.of(_context).new_message, isVertical: _responsiveUtils.isMobile(_context)))
.build()) .build())
] ]
)
); );
} }
} }