From 368679edba53355091320556077a18dbfb78cbd4 Mon Sep 17 00:00:00 2001 From: Khaled Date: Mon, 2 Dec 2024 13:11:55 +0600 Subject: [PATCH] fix: Prevent multiple Tap when importing Playlist --- lib/app/home/home_screen.dart | 1 + lib/app/library/import_playlist_dialog.dart | 21 ++++++++++++++------- lib/app/library/library_tab.dart | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/app/home/home_screen.dart b/lib/app/home/home_screen.dart index 2442bdf..3a10f0b 100644 --- a/lib/app/home/home_screen.dart +++ b/lib/app/home/home_screen.dart @@ -98,6 +98,7 @@ class _HomeTabState extends State { showDialog( context: context, useRootNavigator: true, + barrierDismissible: false, builder: (_) => ChangeNotifierProvider.value( value: context.read(), child: ImportPlaylistDialog(url: url), diff --git a/lib/app/library/import_playlist_dialog.dart b/lib/app/library/import_playlist_dialog.dart index fd2718f..e1d0b28 100644 --- a/lib/app/library/import_playlist_dialog.dart +++ b/lib/app/library/import_playlist_dialog.dart @@ -19,6 +19,7 @@ class _ImportPlaylistDialogState extends State { String? error; Future tryImportPlaylist() async { + if (loading) return; try { error = null; setState(() => loading = true); @@ -95,8 +96,9 @@ class _ImportPlaylistDialogState extends State { error!, maxLines: 3, overflow: TextOverflow.ellipsis, - style: - TextStyle(color: Theme.of(context).colorScheme.error), + style: TextStyle( + color: Theme.of(context).colorScheme.error, + ), ), ), ), @@ -105,11 +107,16 @@ class _ImportPlaylistDialogState extends State { ), ), actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text("Cancel"), - ), - FilledButton(onPressed: tryImportPlaylist, child: const Text("Import")) + if (!loading) + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text("Cancel"), + ), + if (!loading) + FilledButton( + onPressed: tryImportPlaylist, + child: const Text("Import"), + ), ], ); } diff --git a/lib/app/library/library_tab.dart b/lib/app/library/library_tab.dart index b461ec5..32e6e2b 100644 --- a/lib/app/library/library_tab.dart +++ b/lib/app/library/library_tab.dart @@ -101,6 +101,7 @@ class LibraryTab extends StatelessWidget { void onPressed() => showDialog( context: context, useRootNavigator: true, + barrierDismissible: false, builder: (_) => ChangeNotifierProvider.value( value: context.read(), child: const ImportPlaylistDialog(),