diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 798af551..c8ef099a 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -136,16 +136,15 @@ class ChatView extends StatelessWidget { final bottomSheetPadding = FluffyThemes.isColumnMode(context) ? 16.0 : 8.0; final scrollUpBannerEventId = controller.scrollUpBannerEventId; - return WillPopScope( - onWillPop: () async { + return PopScope( + canPop: controller.selectedEvents.isEmpty && !controller.showEmojiPicker, + onPopInvoked: (pop) async { + if (pop) return; if (controller.selectedEvents.isNotEmpty) { controller.clearSelectedEvents(); - return false; } else if (controller.showEmojiPicker) { controller.emojiPickerAction(); - return false; } - return true; }, child: GestureDetector( onTapDown: (_) => controller.setReadMarker(), diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index e8b5e958..40c8858a 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -86,16 +86,23 @@ class ChatListView extends StatelessWidget { stream: Matrix.of(context).onShareContentChanged.stream, builder: (_, __) { final selectMode = controller.selectMode; - return WillPopScope( - onWillPop: () async { + return PopScope( + canPop: controller.selectMode == SelectMode.normal && + !controller.isSearchMode && + controller.activeFilter == + (AppConfig.separateChatTypes + ? ActiveFilter.messages + : ActiveFilter.allChats), + onPopInvoked: (pop) async { + if (pop) return; final selMode = controller.selectMode; if (controller.isSearchMode) { controller.cancelSearch(); - return false; + return; } if (selMode != SelectMode.normal) { controller.cancelAction(); - return false; + return; } if (controller.activeFilter != (AppConfig.separateChatTypes @@ -103,9 +110,8 @@ class ChatListView extends StatelessWidget { : ActiveFilter.allChats)) { controller .onDestinationSelected(AppConfig.separateChatTypes ? 1 : 0); - return false; + return; } - return true; }, child: Row( children: [ diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 2dc7604e..d478159f 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -234,13 +234,13 @@ class _SpaceViewState extends State { ); final spaceChildren = response.rooms; final canLoadMore = response.nextBatch != null; - return WillPopScope( - onWillPop: () async { + return PopScope( + canPop: parentSpace == null, + onPopInvoked: (pop) async { + if (pop) return; if (parentSpace != null) { widget.controller.setActiveSpace(parentSpace.id); - return false; } - return true; }, child: CustomScrollView( controller: widget.scrollController, diff --git a/pubspec.lock b/pubspec.lock index bb2b26b8..fbab11af 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: "direct main" description: name: adaptive_dialog - sha256: "139da77ba96cf7ba0a3dd9a717fb3e4f6870127849161b193833a405ea58095d" + sha256: "910debe8766eff4b378ed5164bb470debb87c53a3bdf6adee03c79f64fbf7348" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" analyzer: dependency: transitive description: @@ -488,10 +488,10 @@ packages: dependency: "direct main" description: name: flutter_foreground_task - sha256: "9d71e28c0f9657b7366d5c769a25b4c6efe1bb4080ee4c74764295e419036000" + sha256: e48d2d810a2d643362e64de41146ed8e95d4dd282bae6abbb32309d9f0bf5d67 url: "https://pub.dev" source: hosted - version: "6.0.0+1" + version: "6.1.2" flutter_highlighter: dependency: "direct main" description: @@ -1042,26 +1042,26 @@ packages: dependency: "direct main" description: name: just_audio - sha256: "5ed0cd723e17dfd8cd4b0253726221e67f6546841ea4553635cf895061fc335b" + sha256: b607cd1a43bac03d85c3aaee00448ff4a589ef2a77104e3d409889ff079bf823 url: "https://pub.dev" source: hosted - version: "0.9.35" + version: "0.9.36" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface - sha256: d8409da198bbc59426cd45d4c92fca522a2ec269b576ce29459d6d6fcaeb44df + sha256: c3dee0014248c97c91fe6299edb73dc4d6c6930a2f4f713579cd692d9e47f4a1 url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.2.2" just_audio_web: dependency: transitive description: name: just_audio_web - sha256: ff62f733f437b25a0ff590f0e295fa5441dcb465f1edbdb33b3dea264705bc13 + sha256: "134356b0fe3d898293102b33b5fd618831ffdc72bb7a1b726140abdf22772b70" url: "https://pub.dev" source: hosted - version: "0.4.8" + version: "0.4.9" keyboard_shortcuts: dependency: "direct main" description: @@ -1163,10 +1163,10 @@ packages: dependency: "direct main" description: name: matrix - sha256: "1e4bef4923fa1e33124843aa59932739e69a5507178f18313ec1067c046156f3" + sha256: b01a8a7141a586853a4f9b2e98b3c9912ff74bbceadc16b2bf3630bf055a830a url: "https://pub.dev" source: hosted - version: "0.22.6" + version: "0.22.7" matrix_api_lite: dependency: transitive description: @@ -1379,10 +1379,10 @@ packages: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "6.0.1" platform: dependency: transitive description: @@ -1728,10 +1728,10 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "8ed044102f3135add97be8653662052838859f5400075ef227f8ad72ae320803" + sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 url: "https://pub.dev" source: hosted - version: "2.5.0+1" + version: "2.5.0+2" stack_trace: dependency: transitive description: @@ -2169,10 +2169,10 @@ packages: dependency: transitive description: name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" + sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" url: "https://pub.dev" source: hosted - version: "5.0.9" + version: "5.1.0" win32_registry: dependency: transitive description: @@ -2209,10 +2209,10 @@ packages: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.4.2" yaml: dependency: transitive description: