TF-3950 Apply new style for Folder Visibility on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+1
@@ -51,6 +51,7 @@ class LanguageAndRegionView extends GetWidget<LanguageAndRegionController> {
|
|||||||
bottom: 16,
|
bottom: 16,
|
||||||
),
|
),
|
||||||
isCenter: true,
|
isCenter: true,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
|||||||
+53
-30
@@ -62,11 +62,12 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
padding: EdgeInsetsDirectional.only(
|
padding: EdgeInsetsDirectional.only(
|
||||||
start: 16,
|
start: 16,
|
||||||
end: 16,
|
end: 16,
|
||||||
bottom: 16,
|
bottom: 8,
|
||||||
),
|
),
|
||||||
isCenter: true,
|
isCenter: true,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
_buildLoadingView(),
|
_buildLoadingView(context),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _buildListMailbox(context),
|
child: _buildListMailbox(context),
|
||||||
),
|
),
|
||||||
@@ -76,47 +77,69 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildLoadingView() {
|
Widget _buildLoadingView(BuildContext context) {
|
||||||
|
final isScreenWithShortestSide = controller
|
||||||
|
.responsiveUtils
|
||||||
|
.isScreenWithShortestSide(context);
|
||||||
|
|
||||||
return Obx(
|
return Obx(
|
||||||
() => controller.viewState.value.fold(
|
() => controller.viewState.value.fold(
|
||||||
(failure) => const SizedBox(height: 24),
|
(failure) => isScreenWithShortestSide
|
||||||
(success) => success is LoadingState || success is LoadingBuildTreeMailboxVisibility
|
? const SizedBox.shrink()
|
||||||
? loadingWidget
|
|
||||||
: const SizedBox(height: 24),
|
: const SizedBox(height: 24),
|
||||||
|
(success) => success is LoadingState ||
|
||||||
|
success is LoadingBuildTreeMailboxVisibility
|
||||||
|
? loadingWidget
|
||||||
|
: isScreenWithShortestSide
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: const SizedBox(height: 24),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildListMailbox(BuildContext context) {
|
Widget _buildListMailbox(BuildContext context) {
|
||||||
return SingleChildScrollView(
|
Widget bodyListMailbox = Column(
|
||||||
controller: controller.mailboxListScrollController,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
key: const PageStorageKey('mailbox_list'),
|
children: [
|
||||||
physics: const ClampingScrollPhysics(),
|
Obx(
|
||||||
child: Column(
|
() => controller.defaultMailboxIsNotEmpty
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Obx(() => controller.defaultMailboxIsNotEmpty
|
|
||||||
? _buildMailboxCategory(
|
? _buildMailboxCategory(
|
||||||
context,
|
context,
|
||||||
MailboxCategories.exchange,
|
MailboxCategories.exchange,
|
||||||
controller.defaultRootNode,
|
controller.defaultRootNode,
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink()),
|
: const SizedBox.shrink(),
|
||||||
Obx(() {
|
),
|
||||||
return MailboxVisibilityFoldersBarWidget(
|
Obx(() {
|
||||||
imagePaths: controller.imagePaths,
|
return MailboxVisibilityFoldersBarWidget(
|
||||||
expandMode: controller.foldersExpandMode.value,
|
imagePaths: controller.imagePaths,
|
||||||
onToggleExpandFolder: controller.toggleExpandFolders,
|
expandMode: controller.foldersExpandMode.value,
|
||||||
);
|
onToggleExpandFolder: controller.toggleExpandFolders,
|
||||||
}),
|
);
|
||||||
Obx(() => AnimatedContainer(
|
}),
|
||||||
duration: const Duration(milliseconds: 400),
|
Obx(
|
||||||
child: controller.foldersExpandMode.value == ExpandMode.EXPAND
|
() => AnimatedContainer(
|
||||||
? buildFolders(context)
|
duration: const Duration(milliseconds: 400),
|
||||||
: const Offstage(),
|
child: controller.foldersExpandMode.value == ExpandMode.EXPAND
|
||||||
)),
|
? buildFolders(context)
|
||||||
],
|
: const Offstage(),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
|
bodyListMailbox = Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||||
|
child: bodyListMailbox,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SingleChildScrollView(
|
||||||
|
controller: controller.mailboxListScrollController,
|
||||||
|
key: const PageStorageKey('mailbox_list'),
|
||||||
|
physics: const ClampingScrollPhysics(),
|
||||||
|
child: bodyListMailbox,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
-8
@@ -1,5 +1,6 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||||
@@ -32,11 +33,13 @@ class MailBoxVisibilityFolderTileBuilder extends StatefulWidget {
|
|||||||
class _MailBoxVisibilityFolderTileBuilderState
|
class _MailBoxVisibilityFolderTileBuilderState
|
||||||
extends State<MailBoxVisibilityFolderTileBuilder> {
|
extends State<MailBoxVisibilityFolderTileBuilder> {
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
|
||||||
final GlobalKey _key = GlobalKey();
|
final GlobalKey _key = GlobalKey();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final isScreenWithShortestSide = _responsiveUtils.isScreenWithShortestSide(context);
|
||||||
final bodyWidget = Material(
|
final bodyWidget = Material(
|
||||||
key: _key,
|
key: _key,
|
||||||
type: MaterialType.transparency,
|
type: MaterialType.transparency,
|
||||||
@@ -47,8 +50,10 @@ class _MailBoxVisibilityFolderTileBuilderState
|
|||||||
),
|
),
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||||
width: 315,
|
width: isScreenWithShortestSide ? double.infinity : 315,
|
||||||
height: 40,
|
height: widget.mailboxNode.item.isTeamMailboxes
|
||||||
|
? MailboxItemWidgetStyles.teamMailboxHeight
|
||||||
|
: 40,
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
if (_isIconDisplayed)
|
if (_isIconDisplayed)
|
||||||
MailboxIconWidget(
|
MailboxIconWidget(
|
||||||
@@ -77,12 +82,16 @@ class _MailBoxVisibilityFolderTileBuilderState
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
return Row(
|
if (isScreenWithShortestSide) {
|
||||||
children: [
|
return bodyWidget;
|
||||||
Flexible(child: bodyWidget),
|
} else {
|
||||||
const Spacer(),
|
return Row(
|
||||||
],
|
children: [
|
||||||
);
|
Flexible(child: bodyWidget),
|
||||||
|
const Spacer(),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PresentationMailbox get _mailbox => widget.mailboxNode.item;
|
PresentationMailbox get _mailbox => widget.mailboxNode.item;
|
||||||
|
|||||||
Reference in New Issue
Block a user