From 5c22983d080e0c11d58e38e6b861ec93f8a84abe Mon Sep 17 00:00:00 2001 From: its-me-abhishek Date: Sat, 16 Dec 2023 01:38:54 +0530 Subject: [PATCH] WillScope() with PopScope() --- .vscode/settings.json | 2 +- lib/services/task_details.dart | 85 +++++++++++++++++----------------- pubspec.lock | 26 +++++------ 3 files changed, 57 insertions(+), 56 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index eac2c035..d08661f7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,6 +13,6 @@ "editor.detectIndentation": false, "editor.tabSize": 4, "editor.codeActionsOnSave": { - "source.fixAll": true + "source.fixAll": "explicit" } } \ No newline at end of file diff --git a/lib/services/task_details.dart b/lib/services/task_details.dart index 791b27fe..95712bb7 100644 --- a/lib/services/task_details.dart +++ b/lib/services/task_details.dart @@ -60,7 +60,49 @@ class _DetailRouteState extends State { @override Widget build(BuildContext context) { - return WillPopScope( + return PopScope( + canPop: false, + onPopInvoked: (bool didPop) async { + if (didPop) { + await Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute(builder: (context) => const HomePage()), + (Route route) => false); + } + // ignore: use_build_context_synchronously + return await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: const Text('Do you want to save changes?'), + actions: [ + TextButton( + onPressed: () { + saveChanges(); + Navigator.of(context).pop(); + setState(() {}); + }, + child: const Text('Yes'), + ), + TextButton( + onPressed: () { + Navigator.of(context).pushNamedAndRemoveUntil( + HomePage.routeName, + (route) => false, + ); + }, + child: const Text('No'), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + ], + ); + }, + ); + }, child: Scaffold( backgroundColor: AppSettings.isDarkMode ? const Color.fromARGB(255, 29, 29, 29) @@ -148,47 +190,6 @@ class _DetailRouteState extends State { child: const Icon(Icons.save), ), ), - onWillPop: () async { - if (modify.changes.isNotEmpty) { - return await showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: const Text('Do you want to save changes?'), - actions: [ - TextButton( - onPressed: () { - saveChanges(); - Navigator.of(context).pop(); - setState(() {}); - }, - child: const Text('Yes'), - ), - TextButton( - onPressed: () { - Navigator.of(context).pushNamedAndRemoveUntil( - HomePage.routeName, - (route) => false, - ); - }, - child: const Text('No'), - ), - TextButton( - onPressed: () { - Navigator.of(context).pop(); - }, - child: const Text('Cancel'), - ), - ], - ); - }, - ); - } else { - return await Navigator.of(context).pushAndRemoveUntil( - MaterialPageRoute(builder: (context) => const HomePage()), - (Route route) => false); - } - }, ); } } diff --git a/pubspec.lock b/pubspec.lock index e923acc1..3f9b7286 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: @@ -636,10 +636,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mime: dependency: transitive description: @@ -977,18 +977,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -1041,10 +1041,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" timezone: dependency: "direct main" description: @@ -1209,10 +1209,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -1254,5 +1254,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=3.1.0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.13.0"