From f4fa185976b508c4a16e1907c81026212790ba91 Mon Sep 17 00:00:00 2001 From: chiragkr04 Date: Thu, 11 Aug 2022 10:54:32 +0530 Subject: [PATCH 1/2] fix: closing rename dialog on escape key press --- .../lib/widget/dialog/styled_dialogs.dart | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart b/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart index 52348dab00..78aa3d0b7f 100644 --- a/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart +++ b/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart @@ -3,12 +3,29 @@ import 'package:flowy_infra/size.dart'; import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra_ui/widget/dialog/dialog_size.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'dart:ui'; extension IntoDialog on Widget { Future show(BuildContext context) async { - await Dialogs.show(this, context); + FocusNode dialogFocusNode = FocusNode(); + await Dialogs.show( + RawKeyboardListener( + focusNode: dialogFocusNode, + onKey: (value) { + if (value.isKeyPressed(LogicalKeyboardKey.escape)) { + Navigator.of(context).pop(); + } + }, + child: this, + ), + context, + ).then( + (value) { + dialogFocusNode.dispose(); + }, + ); } } @@ -45,7 +62,8 @@ class StyledDialog extends StatelessWidget { ); if (shrinkWrap) { - innerContent = IntrinsicWidth(child: IntrinsicHeight(child: innerContent)); + innerContent = + IntrinsicWidth(child: IntrinsicHeight(child: innerContent)); } return FocusTraversalGroup( @@ -80,7 +98,8 @@ class Dialogs { return await Navigator.of(context).push( StyledDialogRoute( barrier: DialogBarrier(color: Colors.black.withOpacity(0.4)), - pageBuilder: (BuildContext buildContext, Animation animation, Animation secondaryAnimation) { + pageBuilder: (BuildContext buildContext, Animation animation, + Animation secondaryAnimation) { return SafeArea(child: child); }, ), @@ -132,7 +151,8 @@ class StyledDialogRoute extends PopupRoute { final RouteTransitionsBuilder? _transitionBuilder; @override - Widget buildPage(BuildContext context, Animation animation, Animation secondaryAnimation) { + Widget buildPage(BuildContext context, Animation animation, + Animation secondaryAnimation) { return Semantics( child: _pageBuilder(context, animation, secondaryAnimation), scopesRoute: true, @@ -141,10 +161,12 @@ class StyledDialogRoute extends PopupRoute { } @override - Widget buildTransitions( - BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { + Widget buildTransitions(BuildContext context, Animation animation, + Animation secondaryAnimation, Widget child) { if (_transitionBuilder == null) { - return FadeTransition(opacity: CurvedAnimation(parent: animation, curve: Curves.easeInOut), child: child); + return FadeTransition( + opacity: CurvedAnimation(parent: animation, curve: Curves.easeInOut), + child: child); } else { return _transitionBuilder!(context, animation, secondaryAnimation, child); } // Some default transition From 96cdb82ca4d3ba0b30e174f4f04b1fe9c51b15e3 Mon Sep 17 00:00:00 2001 From: Chirag Bargoojar Date: Thu, 11 Aug 2022 15:57:55 +0530 Subject: [PATCH 2/2] fix: removed .then() handler --- .../flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart b/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart index 78aa3d0b7f..5db6afacef 100644 --- a/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart +++ b/frontend/app_flowy/packages/flowy_infra_ui/lib/widget/dialog/styled_dialogs.dart @@ -21,11 +21,8 @@ extension IntoDialog on Widget { child: this, ), context, - ).then( - (value) { - dialogFocusNode.dispose(); - }, ); + dialogFocusNode.dispose(); } }