TF-3479 Handle switch state display mode of multiple composer (Fullscreen <-> Normal <-> Minimize)
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+39
-64
@@ -1,6 +1,5 @@
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
||||
@@ -10,17 +9,17 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/web/minimiz
|
||||
class DesktopResponsiveContainerView extends StatelessWidget {
|
||||
|
||||
final ResponsiveUtils responsiveUtils;
|
||||
final ComposerManager composerManager;
|
||||
final ScreenDisplayMode displayMode;
|
||||
final String emailSubject;
|
||||
final VoidCallback onCloseViewAction;
|
||||
final OnChangeDisplayModeAction onChangeDisplayModeAction;
|
||||
final Widget Function(BuildContext context, BoxConstraints constraints) childBuilder;
|
||||
|
||||
final ComposerManager _composerManager = Get.find<ComposerManager>();
|
||||
|
||||
DesktopResponsiveContainerView({
|
||||
const DesktopResponsiveContainerView({
|
||||
super.key,
|
||||
required this.childBuilder,
|
||||
required this.composerManager,
|
||||
required this.responsiveUtils,
|
||||
required this.displayMode,
|
||||
required this.emailSubject,
|
||||
@@ -31,71 +30,47 @@ class DesktopResponsiveContainerView extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (displayMode == ScreenDisplayMode.minimize) {
|
||||
if (_composerManager.composerIds.length == 1) {
|
||||
return PositionedDirectional(
|
||||
final composerWidget = PointerInterceptor(
|
||||
child: MinimizeComposerWidget(
|
||||
emailSubject: emailSubject,
|
||||
onCloseViewAction: onCloseViewAction,
|
||||
onChangeDisplayModeAction: onChangeDisplayModeAction,
|
||||
),
|
||||
);
|
||||
|
||||
return composerManager.composerIdsQueue.length == 1
|
||||
? PositionedDirectional(
|
||||
end: DesktopResponsiveContainerViewStyle.margin,
|
||||
bottom: DesktopResponsiveContainerViewStyle.margin,
|
||||
child: PointerInterceptor(
|
||||
child: MinimizeComposerWidget(
|
||||
emailSubject: emailSubject,
|
||||
onCloseViewAction: onCloseViewAction,
|
||||
onChangeDisplayModeAction: onChangeDisplayModeAction,
|
||||
),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return PointerInterceptor(
|
||||
child: MinimizeComposerWidget(
|
||||
emailSubject: emailSubject,
|
||||
onCloseViewAction: onCloseViewAction,
|
||||
onChangeDisplayModeAction: onChangeDisplayModeAction,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
child: composerWidget,
|
||||
)
|
||||
: composerWidget;
|
||||
} else if (displayMode == ScreenDisplayMode.normal) {
|
||||
if (_composerManager.composerIds.length == 1) {
|
||||
return PositionedDirectional(
|
||||
final composerWidget = Card(
|
||||
elevation: DesktopResponsiveContainerViewStyle.elevation,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopResponsiveContainerViewStyle.radius)),
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: DesktopResponsiveContainerViewStyle.backgroundColor,
|
||||
width: DesktopResponsiveContainerViewStyle.normalScreenMaxWidth,
|
||||
height: DesktopResponsiveContainerViewStyle.normalScreenMaxHeight,
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
PointerInterceptor(
|
||||
child: childBuilder.call(context, constraints),
|
||||
)
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return composerManager.composerIdsQueue.length == 1
|
||||
? PositionedDirectional(
|
||||
end: DesktopResponsiveContainerViewStyle.margin,
|
||||
bottom: DesktopResponsiveContainerViewStyle.margin,
|
||||
child: Card(
|
||||
elevation: DesktopResponsiveContainerViewStyle.elevation,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopResponsiveContainerViewStyle.radius))
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: DesktopResponsiveContainerViewStyle.backgroundColor,
|
||||
width: DesktopResponsiveContainerViewStyle.normalScreenMaxWidth,
|
||||
height: DesktopResponsiveContainerViewStyle.normalScreenMaxHeight,
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
PointerInterceptor(
|
||||
child: childBuilder.call(context, constraints)
|
||||
)
|
||||
)
|
||||
),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return Card(
|
||||
elevation: DesktopResponsiveContainerViewStyle.elevation,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopResponsiveContainerViewStyle.radius))
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: DesktopResponsiveContainerViewStyle.backgroundColor,
|
||||
width: DesktopResponsiveContainerViewStyle.normalScreenMaxWidth,
|
||||
height: DesktopResponsiveContainerViewStyle.normalScreenMaxHeight,
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
PointerInterceptor(
|
||||
child: childBuilder.call(context, constraints)
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
child: composerWidget,
|
||||
)
|
||||
: composerWidget;
|
||||
} else if (displayMode == ScreenDisplayMode.fullScreen) {
|
||||
final maxWidth = responsiveUtils.getSizeScreenWidth(context) * 0.85;
|
||||
final maxHeight = responsiveUtils.getSizeScreenHeight(context) * 0.9;
|
||||
|
||||
Reference in New Issue
Block a user