TF-313 Apply new ui for AppBar EmailView

This commit is contained in:
dab246
2022-03-09 14:32:21 +07:00
committed by Dat H. Pham
parent 6dcf9f9ea7
commit 11735ed1d7
63 changed files with 312 additions and 244 deletions
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:core/core.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -11,6 +12,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_w
import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_file_tile_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_content_item_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/sender_and_receiver_information_tile_builder.dart';
@@ -34,6 +36,7 @@ class EmailView extends GetView {
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildAppBar(context),
_buildDivider(),
Expanded(child: _buildEmailBody(context)),
_buildBottomBar(context),
]
@@ -41,21 +44,32 @@ class EmailView extends GetView {
));
}
Widget _buildDivider(){
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Divider(color: AppColor.colorDividerEmailView, height: 0.5));
}
Widget _buildAppBar(BuildContext context) {
return Obx(() => Padding(
padding: EdgeInsets.only(left: 6, top: 6, right: 6, bottom: 6),
padding: EdgeInsets.only(top: 6),
child: (AppBarMailWidgetBuilder(
context,
imagePaths,
responsiveUtils,
emailController.mailboxDashBoardController.selectedEmail.value)
emailController.currentEmail,
emailController.currentMailbox)
..onBackActionClick(() => emailController.backToThreadView())
..onUnreadEmailActionClick((presentationEmail) =>
emailController.markAsEmailRead(presentationEmail, ReadActions.markAsUnread))
..addOnMoveToMailboxActionClick((presentationEmail) =>
emailController.openDestinationPickerView(presentationEmail))
..addOnMarkAsStarActionClick((presentationEmail) =>
emailController.markAsStarEmail(presentationEmail)))
..addOnEmailActionClick((email, action) => emailController.handleEmailAction(email, action))
..addOnMoreActionClick((email, position) => responsiveUtils.isMobileDevice(context)
? emailController.openMoreMenuEmailAction(
context,
_emailActionMoreActionTile(context, email),
cancelButton: _buildCancelButton(context))
: emailController.openMoreMenuEmailActionForTablet(
context,
position,
_popupMenuEmailActionTile(context, email))))
.build()));
}
@@ -311,4 +325,41 @@ class EmailView extends GetView {
}
}));
}
List<Widget> _emailActionMoreActionTile(BuildContext context, PresentationEmail email) {
return <Widget>[
_unreadEmailAction(context, email),
];
}
Widget _buildCancelButton(BuildContext context) {
return CupertinoActionSheetAction(
child: Text(
AppLocalizations.of(context).cancel,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)),
onPressed: () => emailController.closeMoreMenu(),
);
}
Widget _unreadEmailAction(BuildContext context, PresentationEmail email) {
return (EmailActionCupertinoActionSheetActionBuilder(
Key('email_action_unread_action'),
SvgPicture.asset(imagePaths.icUnreadEmail, width: 28, height: 28, fit: BoxFit.fill, color: AppColor.colorTextButton),
AppLocalizations.of(context).mark_as_unread,
email,
iconLeftPadding: responsiveUtils.isMobile(context)
? EdgeInsets.only(left: 12, right: 16)
: EdgeInsets.only(right: 12),
iconRightPadding: responsiveUtils.isMobile(context)
? EdgeInsets.only(right: 12)
: EdgeInsets.zero)
..onActionClick((email) => emailController.handleEmailAction(email, EmailActionType.markAsUnread)))
.build();
}
List<PopupMenuEntry> _popupMenuEmailActionTile(BuildContext context, PresentationEmail email) {
return [
PopupMenuItem(padding: EdgeInsets.symmetric(horizontal: 8), child: _unreadEmailAction(context, email)),
];
}
}