TF-381 Navigation route ThreadView to EmailView on browser

This commit is contained in:
dab246
2022-03-21 15:25:49 +07:00
committed by Dat H. Pham
parent 3914f3ad65
commit f942041701
17 changed files with 220 additions and 170 deletions
@@ -7,66 +7,90 @@ import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_action.dart';
import 'package:tmail_ui_user/features/setting/presentation/model/app_setting.dart';
import 'package:tmail_ui_user/features/setting/presentation/model/reading_pane.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
final responsiveUtils = Get.find<ResponsiveUtils>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: controller.scaffoldKey,
drawer: ResponsiveWidget(
responsiveUtils: responsiveUtils,
mobile: Container(
child: MailboxView(),
width: responsiveUtils.isPortrait(context)
? responsiveUtils.getSizeWidthScreen(context)
: responsiveUtils.getSizeWidthScreen(context) / 2),
tablet: Container(
child: MailboxView(),
width: responsiveUtils.getSizeWidthScreen(context) / 2),
tabletLarge: Container(
child: MailboxView(),
width: responsiveUtils.getSizeWidthScreen(context) * 0.35),
responsiveUtils: _responsiveUtils,
mobile: Container(child: MailboxView(), width: _responsiveUtils.getSizeScreenWidth(context)),
tablet: Container(child: MailboxView(), width: _responsiveUtils.getSizeScreenWidth(context) / 2),
desktop: SizedBox.shrink()
),
drawerEnableOpenDragGesture: !responsiveUtils.isDesktop(context),
drawerEnableOpenDragGesture: !_responsiveUtils.isDesktop(context),
body: Stack(children: [
ResponsiveWidget(
responsiveUtils: responsiveUtils,
desktop: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(flex: 1, child: MailboxView()),
Expanded(flex: 1, child: ThreadView()),
Expanded(flex: 2, child: EmailView()),
],
),
responsiveUtils: _responsiveUtils,
desktop: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(flex: 1, child: MailboxView()),
Expanded(flex: 3, child: _buildThreadAndEmailContainer(context)),
],
),
tabletLarge: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: responsiveUtils.getSizeWidthScreen(context) * 0.35,
padding: EdgeInsets.symmetric(horizontal: 16),
child: ThreadView()
),
Expanded(child: EmailView()),
],
),
),
tabletLarge: Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(flex: 2, child: MailboxView()),
Expanded(flex: 4, child: _buildThreadAndEmailContainer(context)),
],
),
tablet: ThreadView(),
mobile: ThreadView()),
),
tablet: ThreadView(),
mobile: ThreadView()
),
Obx(() => controller.dashBoardAction == DashBoardAction.compose
? ComposerView()
: SizedBox.shrink()),
]),
);
}
Widget _buildThreadAndEmailContainer(BuildContext context) {
switch(AppSetting.readingPane) {
case ReadingPane.noSplit:
return Obx(() {
switch(controller.routePath.value) {
case AppRoutes.THREAD:
return ThreadView();
case AppRoutes.EMAIL:
return EmailView();
default:
return SizedBox.shrink();
}
});
case ReadingPane.rightOfInbox:
if (_responsiveUtils.isDesktop(context)) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(flex: 1, child: ThreadView()),
Expanded(flex: 2, child: EmailView()),
],
);
} else {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(flex: 1, child: ThreadView()),
Expanded(flex: 1, child: EmailView()),
],
);
}
default:
return SizedBox.shrink();
}
}
}