Browse Source

Merge pull request #747 from ente-io/make-dialogs-dismissable

Make dialogs dismissable
Ashil 2 years ago
parent
commit
a85db9fef2
2 changed files with 14 additions and 30 deletions
  1. 5 29
      lib/ui/components/action_sheet_widget.dart
  2. 9 1
      lib/ui/components/dialog_widget.dart

+ 5 - 29
lib/ui/components/action_sheet_widget.dart

@@ -14,37 +14,13 @@ enum ActionSheetType {
   iconOnly,
 }
 
-Future<ButtonAction?> showCommonActionSheet({
-  required BuildContext context,
-  required List<ButtonWidget> buttons,
-  required ActionSheetType actionSheetType,
-  bool isCheckIconGreen = false,
-  String? title,
-  String? body,
-}) {
-  return showMaterialModalBottomSheet(
-    backgroundColor: Colors.transparent,
-    barrierColor: backdropFaintDark,
-    useRootNavigator: true,
-    context: context,
-    builder: (_) {
-      return ActionSheetWidget(
-        title: title,
-        body: body,
-        actionButtons: buttons,
-        actionSheetType: actionSheetType,
-        isCheckIconGreen: isCheckIconGreen,
-      );
-    },
-    isDismissible: false,
-    enableDrag: false,
-  );
-}
-
+///Returns null if dismissed
 Future<ButtonAction?> showActionSheet({
   required BuildContext context,
   required List<ButtonWidget> buttons,
   required ActionSheetType actionSheetType,
+  bool enableDrag = true,
+  bool isDismissible = true,
   bool isCheckIconGreen = false,
   String? title,
   String? body,
@@ -54,6 +30,8 @@ Future<ButtonAction?> showActionSheet({
     barrierColor: backdropFaintDark,
     useRootNavigator: true,
     context: context,
+    isDismissible: isDismissible,
+    enableDrag: enableDrag,
     builder: (_) {
       return ActionSheetWidget(
         title: title,
@@ -63,8 +41,6 @@ Future<ButtonAction?> showActionSheet({
         isCheckIconGreen: isCheckIconGreen,
       );
     },
-    isDismissible: false,
-    enableDrag: false,
   );
 }
 

+ 9 - 1
lib/ui/components/dialog_widget.dart

@@ -9,14 +9,17 @@ import 'package:photos/ui/components/button_widget.dart';
 import 'package:photos/ui/components/models/button_type.dart';
 import 'package:photos/utils/separators_util.dart';
 
+///Will return null if dismissed by tapping outside
 Future<ButtonAction?> showGenericErrorDialog({
   required BuildContext context,
+  bool isDismissible = true,
 }) async {
   return showDialogWidget(
     context: context,
     title: "Error",
     icon: Icons.error_outline_outlined,
     body: "It looks like something went wrong. Please try again.",
+    isDismissible: isDismissible,
     buttons: const [
       ButtonWidget(
         buttonType: ButtonType.secondary,
@@ -27,6 +30,7 @@ Future<ButtonAction?> showGenericErrorDialog({
   );
 }
 
+///Will return null if dismissed by tapping outside
 Future<ButtonAction?> showNewChoiceDialog({
   required BuildContext context,
   required String title,
@@ -41,6 +45,7 @@ Future<ButtonAction?> showNewChoiceDialog({
   FutureVoidCallback? secondButtonOnTap,
   bool isCritical = false,
   IconData? icon,
+  bool isDismissible = true,
 }) async {
   final buttons = [
     ButtonWidget(
@@ -64,18 +69,21 @@ Future<ButtonAction?> showNewChoiceDialog({
     body: body,
     buttons: buttons,
     icon: icon,
+    isDismissible: isDismissible,
   );
 }
 
+///Will return null if dismissed by tapping outside
 Future<ButtonAction?> showDialogWidget({
   required BuildContext context,
   required String title,
   String? body,
   required List<ButtonWidget> buttons,
   IconData? icon,
+  bool isDismissible = true,
 }) {
   return showDialog(
-    barrierDismissible: false,
+    barrierDismissible: isDismissible,
     barrierColor: backdropFaintDark,
     context: context,
     builder: (context) {