Files
workavia-mail-front/lib/features/composer/presentation/composer_overlay_view.dart
T

85 lines
3.0 KiB
Dart

import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/update_screen_display_mode_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/expand_composer_button.dart';
class ComposerOverlayView extends StatefulWidget {
const ComposerOverlayView({super.key});
@override
State<ComposerOverlayView> createState() => _ComposerOverlayViewState();
}
class _ComposerOverlayViewState extends State<ComposerOverlayView> {
late final ComposerManager _composerManager;
late final ImagePaths _imagePaths;
late final ResponsiveUtils _responsiveUtils;
@override
void initState() {
super.initState();
_composerManager = Get.find<ComposerManager>();
_imagePaths = Get.find<ImagePaths>();
_responsiveUtils = Get.find<ResponsiveUtils>();
}
@override
Widget build(BuildContext context) {
return Obx(() {
final composers = _composerManager.composers;
final composerIdsQueue = _composerManager.composerIdsQueue;
if (composers.isEmpty || composerIdsQueue.isEmpty) return const SizedBox.shrink();
if (!_responsiveUtils.isDesktop(context)) {
final firstResponsiveComposerView = _composerManager.firstComposerViewWhenResponsiveChanged;
if (firstResponsiveComposerView != null) return firstResponsiveComposerView;
}
final fullScreenComposerView = _composerManager.firstFullScreenComposerView;
if (fullScreenComposerView != null) return fullScreenComposerView;
if (composerIdsQueue.length == 1) {
return _composerManager.getComposerView(composerIdsQueue.first);
}
final isExceedsScreenSize = _composerManager.isExceedsScreenSize(
screenWidth: context.width,
);
if (isExceedsScreenSize) {
_composerManager.syncComposerQueue(screenWidth: context.width);
}
final countComposerHidden = _composerManager.countComposerHidden;
final visibleComposers = composerIdsQueue
.map(_composerManager.getComposerView)
.where((view) => !view.controller.isHiddenScreen)
.toList();
return Align(
alignment: AlignmentDirectional.bottomEnd,
child: Padding(
padding: const EdgeInsetsDirectional.symmetric(horizontal: 24, vertical: 16),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.min,
children: [
if (countComposerHidden > 0)
ExpandComposerButton(
imagePaths: _imagePaths,
countComposerHidden: countComposerHidden,
onToggleDisplayComposerAction: () {},
),
...visibleComposers,
],
),
),
);
});
}
}