From 0998290b198c1f27b2bfb99b712b546e3a998655 Mon Sep 17 00:00:00 2001 From: zaelgohary Date: Mon, 6 Jan 2025 06:42:10 +0200 Subject: [PATCH] Check if widget is mounted before setState, assure async operation finished before pop context --- app/lib/screens/preference_screen.dart | 4 +++- app/lib/widgets/wallets/warning_dialog.dart | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/lib/screens/preference_screen.dart b/app/lib/screens/preference_screen.dart index b58e328b1..1a7b57c73 100644 --- a/app/lib/screens/preference_screen.dart +++ b/app/lib/screens/preference_screen.dart @@ -356,7 +356,9 @@ class _PreferenceScreenState extends ConsumerState { return false; } deleteLoading = false; - setState(() {}); + if (mounted) { + setState(() {}); + } return true; }, ), diff --git a/app/lib/widgets/wallets/warning_dialog.dart b/app/lib/widgets/wallets/warning_dialog.dart index fd27ea99f..1606e79d7 100644 --- a/app/lib/widgets/wallets/warning_dialog.dart +++ b/app/lib/widgets/wallets/warning_dialog.dart @@ -35,12 +35,18 @@ class _WarningDialogWidgetState extends State { ), TextButton( onPressed: () async { - deleteLoading = true; - setState(() {}); - await widget.onAgree(); - deleteLoading = false; - setState(() {}); - if (context.mounted) { + if (mounted) { + setState(() { + deleteLoading = true; + }); + } + final bool agreed = await widget.onAgree(); + if (mounted) { + setState(() { + deleteLoading = false; + }); + } + if (agreed && context.mounted) { Navigator.pop(context); } },