TF-1427 Move composer button to dashboard view on web

This commit is contained in:
dab246
2023-02-08 14:12:38 +07:00
committed by Dat Vu
parent 373405e443
commit 4f8da9cb31
4 changed files with 66 additions and 63 deletions
@@ -6,6 +6,7 @@ class ResponsiveUtils {
static const double defaultSizeLeftMenuMobile = 375;
static const double defaultSizeDrawer = 320;
static const double defaultSizeMenu = 256;
final int heightShortest = 600;
@@ -13,8 +14,6 @@ class ResponsiveUtils {
final int minTabletWidth = 600;
final int minTabletLargeWidth = 900;
final double defaultSizeMenu = 256;
final double _loginTextFieldWidthSmallScreen = 280.0;
final double _loginTextFieldWidthLargeScreen = 320.0;
final double _loginButtonWidth = 240.0;
@@ -6,7 +6,6 @@ import 'package:model/model.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/base/mixin/popup_menu_widget_mixin.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/context_item_mailbox_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
@@ -49,8 +48,6 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
? AppColor.colorBgDesktop
: Colors.white,
child: Column(children: [
if (_responsiveUtils.isDesktop(context))
_buildComposerButton(context),
Obx(() => controller.isSearchActive()
? _buildInputSearchFormWidget(context)
: const SizedBox.shrink()),
@@ -60,8 +57,6 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
? AppColor.colorBgDesktop
: Colors.white,
padding: EdgeInsets.zero,
margin: EdgeInsets.only(
top: _responsiveUtils.isDesktop(context) ? 16 : 0),
child: RefreshIndicator(
color: AppColor.primaryColor,
onRefresh: () async => controller.refreshAllMailbox(),
@@ -105,34 +100,6 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
);
}
Widget _buildComposerButton(BuildContext context) {
return Container(
padding: const EdgeInsets.only(top: 16, right: 16),
color: AppColor.colorBgDesktop,
alignment: Alignment.centerLeft,
child: (ButtonBuilder(_imagePaths.icComposeWeb)
..key(const Key('button_compose_email'))
..decoration(BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: AppColor.colorTextButton,
boxShadow: const [
BoxShadow(
blurRadius: 12.0,
color: AppColor.colorShadowComposerButton
)
]))
..paddingIcon(const EdgeInsets.only(right: 8))
..iconColor(Colors.white)
..size(16)
..radiusSplash(10)
..padding(const EdgeInsets.symmetric(vertical: 8))
..textStyle(const TextStyle(fontSize: 15, color: Colors.white, fontWeight: FontWeight.w500))
..onPressActionClick(() => controller.mailboxDashBoardController.goToComposer(ComposerArguments()))
..text(AppLocalizations.of(context).compose, isVertical: false))
.build());
}
Widget _buildLoadingView() {
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),
@@ -6,6 +6,7 @@ import 'package:get/get.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view_web.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
@@ -63,7 +64,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
child: Column(children: [
Row(children: [
Container(
width: responsiveUtils.defaultSizeMenu,
width: ResponsiveUtils.defaultSizeMenu,
color: Colors.white,
padding: const EdgeInsets.only(left: 28),
alignment: Alignment.center,
@@ -103,32 +104,35 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
height: 80,
child: _buildRightHeader(context)))
]),
Expanded(child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(child: MailboxView(), width: responsiveUtils.defaultSizeMenu),
Expanded(child: Column(children: [
const SpamReportBannerWebWidget(),
_buildEmptyTrashButton(context),
const QuotasWarningBannerWidget(
margin: EdgeInsets.only(right: 16, top: 8),
),
_buildVacationNotificationMessage(context),
_buildListButtonQuickSearchFilter(context),
_buildMarkAsMailboxReadLoading(context),
Expanded(child: Obx(() {
switch(controller.dashboardRoute.value) {
case DashboardRoutes.thread:
return _buildThreadViewForWebDesktop(context);
case DashboardRoutes.emailDetailed:
return EmailView();
default:
return const SizedBox.shrink();
}
}))
]))
],
))
Expanded(child: Row(children: [
Column(children: [
_buildComposerButton(context),
Expanded(child: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeMenu
))
]),
Expanded(child: Column(children: [
const SpamReportBannerWebWidget(),
_buildEmptyTrashButton(context),
const QuotasWarningBannerWidget(
margin: EdgeInsets.only(right: 16, top: 8),
),
_buildVacationNotificationMessage(context),
_buildListButtonQuickSearchFilter(context),
_buildMarkAsMailboxReadLoading(context),
Expanded(child: Obx(() {
switch(controller.dashboardRoute.value) {
case DashboardRoutes.thread:
return _buildThreadViewForWebDesktop(context);
case DashboardRoutes.emailDetailed:
return EmailView();
default:
return const SizedBox.shrink();
}
}))
]))
]))
]),
),
),
@@ -700,4 +704,37 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
}
});
}
Widget _buildComposerButton(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
color: Colors.transparent,
width: ResponsiveUtils.defaultSizeMenu,
alignment: Alignment.centerLeft,
child: (ButtonBuilder(imagePaths.icComposeWeb)
..key(const Key('button_compose_email'))
..decoration(BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: AppColor.colorTextButton,
boxShadow: const [
BoxShadow(
blurRadius: 12.0,
color: AppColor.colorShadowComposerButton
)
]))
..paddingIcon(const EdgeInsets.only(right: 8))
..iconColor(Colors.white)
..size(24)
..radiusSplash(10)
..padding(const EdgeInsets.symmetric(vertical: 8))
..textStyle(const TextStyle(
fontSize: 15,
color: Colors.white,
fontWeight: FontWeight.w500
))
..onPressActionClick(() => controller.goToComposer(ComposerArguments()))
..text(AppLocalizations.of(context).compose, isVertical: false)
).build()
);
}
}
@@ -81,7 +81,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
Expanded(child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(child: ManageAccountMenuView(), width: _responsiveUtils.defaultSizeMenu),
SizedBox(child: ManageAccountMenuView(), width: ResponsiveUtils.defaultSizeMenu),
Expanded(child: Container(
color: AppColor.colorBgDesktop,
child: Column(children: [