Fix bottom overflow of confirm dialog save message on landscape mobile

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-07-03 01:43:09 +07:00
committed by Dat H. Pham
parent 497b6325a8
commit 8c0a3bccfa
3 changed files with 21 additions and 4 deletions
@@ -32,6 +32,7 @@ class ConfirmationDialogBuilder extends StatelessWidget {
final List<TextSpan>? listTextSpan;
final bool isArrangeActionButtonsVertical;
final bool useIconAsBasicLogo;
final bool isScrollContentEnabled;
final OnConfirmButtonAction? onConfirmButtonAction;
final OnCancelButtonAction? onCancelButtonAction;
final OnCloseButtonAction? onCloseButtonAction;
@@ -59,6 +60,7 @@ class ConfirmationDialogBuilder extends StatelessWidget {
this.listTextSpan,
this.isArrangeActionButtonsVertical = false,
this.useIconAsBasicLogo = false,
this.isScrollContentEnabled = false,
this.onConfirmButtonAction,
this.onCancelButtonAction,
this.onCloseButtonAction,
@@ -84,6 +86,7 @@ class ConfirmationDialogBuilder extends StatelessWidget {
listTextSpan: listTextSpan,
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical,
useIconAsBasicLogo: useIconAsBasicLogo,
isScrollContentEnabled: isScrollContentEnabled,
onConfirmButtonAction: onConfirmButtonAction,
onCancelButtonAction: onCancelButtonAction,
onCloseButtonAction: onCloseButtonAction,
@@ -112,6 +115,7 @@ class ConfirmationDialogBuilder extends StatelessWidget {
listTextSpan: listTextSpan,
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical,
useIconAsBasicLogo: useIconAsBasicLogo,
isScrollContentEnabled: isScrollContentEnabled,
onConfirmButtonAction: onConfirmButtonAction,
onCancelButtonAction: onCancelButtonAction,
onCloseButtonAction: onCloseButtonAction,
@@ -137,6 +141,7 @@ class _BodyContent extends StatelessWidget {
final List<TextSpan>? listTextSpan;
final bool isArrangeActionButtonsVertical;
final bool useIconAsBasicLogo;
final bool isScrollContentEnabled;
final OnConfirmButtonAction? onConfirmButtonAction;
final OnCancelButtonAction? onCancelButtonAction;
final OnCloseButtonAction? onCloseButtonAction;
@@ -147,6 +152,10 @@ class _BodyContent extends StatelessWidget {
required this.textContent,
required this.confirmText,
required this.cancelText,
required this.maxWidth,
required this.isArrangeActionButtonsVertical,
required this.useIconAsBasicLogo,
this.isScrollContentEnabled = false,
this.iconWidget,
this.additionalWidgetContent,
this.cancelBackgroundButtonColor,
@@ -154,10 +163,7 @@ class _BodyContent extends StatelessWidget {
this.cancelLabelButtonColor,
this.confirmLabelButtonColor,
this.margin,
required this.maxWidth,
this.listTextSpan,
required this.isArrangeActionButtonsVertical,
required this.useIconAsBasicLogo,
this.onConfirmButtonAction,
this.onCancelButtonAction,
this.onCloseButtonAction,
@@ -165,7 +171,7 @@ class _BodyContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
final child = Container(
width: 421,
constraints: BoxConstraints(maxWidth: maxWidth),
decoration: const BoxDecoration(
@@ -197,6 +203,12 @@ class _BodyContent extends StatelessWidget {
],
),
);
if (isScrollContentEnabled) {
return SingleChildScrollView(child: child);
} else {
return child;
}
}
bool _showCloseButton() => onCloseButtonAction != null;
@@ -40,6 +40,7 @@ mixin MessageDialogActionMixin {
PopInvokedWithResultCallback? onPopInvoked,
bool isArrangeActionButtonsVertical = false,
bool useIconAsBasicLogo = false,
bool isScrollContentEnabled = false,
EdgeInsetsGeometry? dialogMargin,
}
) async {
@@ -54,6 +55,7 @@ mixin MessageDialogActionMixin {
listTextSpan: listTextSpan,
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical,
useIconAsBasicLogo: useIconAsBasicLogo,
isScrollContentEnabled: isScrollContentEnabled,
title: title ?? '',
textContent: message,
confirmText: actionName,
@@ -106,6 +108,7 @@ mixin MessageDialogActionMixin {
confirmText: actionName,
cancelText: hasCancelButton ? cancelTitle ?? AppLocalizations.of(context).cancel : '',
useIconAsBasicLogo: useIconAsBasicLogo,
isScrollContentEnabled: isScrollContentEnabled,
onConfirmButtonAction: () {
if (autoPerformPopBack) {
popBack();
@@ -161,6 +164,7 @@ mixin MessageDialogActionMixin {
listTextSpan: listTextSpan,
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical,
useIconAsBasicLogo: useIconAsBasicLogo,
isScrollContentEnabled: isScrollContentEnabled,
title: title ?? '',
textContent: message,
iconWidget: icon,
@@ -1938,6 +1938,7 @@ class ComposerController extends BaseController
outsideDismissible: false,
autoPerformPopBack: false,
isArrangeActionButtonsVertical: true,
isScrollContentEnabled: responsiveUtils.isLandscapeMobile(context),
usePopScope: true,
onConfirmAction: () => _handleSaveMessageToDraft(context),
onCancelAction: () {