TF-3953 Close several modals when click outside

This commit is contained in:
DatDang
2025-08-07 14:14:50 +07:00
committed by Dat H. Pham
parent 44c17bc762
commit 9e7298bc76
34 changed files with 575 additions and 580 deletions
@@ -8,11 +8,9 @@ import 'package:core/presentation/views/text/type_ahead_form_field_builder.dart'
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/extensions/email_address_extension.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/widget/default_field/default_email_address_drop_down_button.dart';
import 'package:tmail_ui_user/features/base/widget/default_field/default_horizontal_field_widget.dart';
import 'package:tmail_ui_user/features/base/widget/default_field/default_label_field_widget.dart';
@@ -313,20 +311,16 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
);
}
return PointerInterceptor(
child: ResponsiveWidget(
responsiveUtils: controller.responsiveUtils,
mobile: IdentityCreatorFormMobileBuilder(
controller: controller,
formView: bodyCreatorView,
enableRichTextKeyboard: PlatformInfo.isMobile,
),
tablet: Portal(
child: IdentityCreatorFormDesktopBuilder(
controller: controller,
formView: bodyCreatorView,
),
),
return ResponsiveWidget(
responsiveUtils: controller.responsiveUtils,
mobile: IdentityCreatorFormMobileBuilder(
controller: controller,
formView: bodyCreatorView,
enableRichTextKeyboard: PlatformInfo.isMobile,
),
tablet: IdentityCreatorFormDesktopBuilder(
controller: controller,
formView: bodyCreatorView,
),
);
}
@@ -7,6 +7,7 @@ import 'package:get/get.dart';
import 'package:rich_text_composer/views/keyboard_rich_text.dart';
import 'package:rich_text_composer/views/widgets/rich_text_keyboard_toolbar.dart';
import 'package:tmail_ui_user/features/base/widget/default_field/default_close_button_widget.dart';
import 'package:tmail_ui_user/features/base/widget/pop_back_barrier_widget.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_controller.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/widgets/identity_creator_form_bottom_view.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/widgets/identity_creator_form_title_widget.dart';
@@ -34,12 +35,12 @@ class IdentityCreatorFormDesktopBuilder extends StatelessWidget {
borderRadius: const BorderRadius.all(Radius.circular(16)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.08),
color: Colors.black.withValues(alpha: 0.08),
blurRadius: 24,
offset: const Offset(0, 2),
),
BoxShadow(
color: Colors.black.withOpacity(0.08),
color: Colors.black.withValues(alpha: 0.08),
blurRadius: 2,
),
],
@@ -101,10 +102,14 @@ class IdentityCreatorFormDesktopBuilder extends StatelessWidget {
}
return Scaffold(
backgroundColor: Colors.black.withOpacity(0.2),
body: GestureDetector(
onTap: () => controller.clearFocusEditor(context),
child: Center(child: bodyWidget),
backgroundColor: Colors.black.withValues(alpha: 0.2),
body: PopBackBarrierWidget(
child: Center(
child: GestureDetector(
onTap: () => controller.clearFocusEditor(context),
child: bodyWidget,
),
),
),
);
}