Add presentation layer for mailbox, mail, message

This commit is contained in:
dab246
2021-07-29 12:49:17 +07:00
committed by Dat H. Pham
parent 5d3d2f4c1e
commit 7a99fd2c59
31 changed files with 626 additions and 105 deletions
@@ -0,0 +1,15 @@
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_bindings.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_bindings.dart';
class MailboxDashBoardBindings extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => MailboxDashBoardController());
MailboxBindings().dependencies();
ThreadBindings().dependencies();
}
}
@@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
class MailboxDashBoardController extends BaseController {
final scaffoldKey = GlobalKey<ScaffoldState>();
final mailboxCurrent = PresentationMailbox.createMailboxEmpty().obs;
final mailCurrent = PresentationThread.createThreadEmpty().obs;
MailboxDashBoardController();
@override
void onReady() {
super.onReady();
scaffoldKey.currentState?.openDrawer();
}
@override
void onDone() {
}
@override
void onError(error) {
}
}
@@ -0,0 +1,38 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/mail/presentation/mail_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/thread/presentation/thread_view.dart';
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> {
final responsiveUtils = Get.find<ResponsiveUtils>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: controller.scaffoldKey,
drawer: responsiveUtils.isMobile(context)
? Container(
child: MailboxView(),
width: responsiveUtils.getSizeWidthScreen(context))
: null,
drawerEnableOpenDragGesture: responsiveUtils.isMobile(context),
body: SafeArea(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (!responsiveUtils.isMobile(context)) Expanded(child: MailboxView()),
Expanded(
flex: responsiveUtils.isDesktop(context) ? 1 : 3,
child: ThreadView(),
),
if (responsiveUtils.isDesktop(context)) Expanded(flex: 2, child: MailView()),
],
),
),
);
}
}