From 55733ef505c55f61b8ac3ae03639d0caa38b7b58 Mon Sep 17 00:00:00 2001 From: nyne Date: Mon, 26 May 2025 16:09:23 +0800 Subject: [PATCH] Update selectAll method to handle search mode for selecting comics. Close #359 --- lib/pages/favorites/local_favorites_page.dart | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/pages/favorites/local_favorites_page.dart b/lib/pages/favorites/local_favorites_page.dart index 602f639..12f258c 100644 --- a/lib/pages/favorites/local_favorites_page.dart +++ b/lib/pages/favorites/local_favorites_page.dart @@ -155,16 +155,33 @@ class _LocalFavoritesPageState extends State<_LocalFavoritesPage> { void selectAll() { setState(() { - selectedComics = comics.asMap().map((k, v) => MapEntry(v, true)); + if (searchMode) { + selectedComics = searchResults.asMap().map((k, v) => MapEntry(v, true)); + } else { + selectedComics = comics.asMap().map((k, v) => MapEntry(v, true)); + } }); } void invertSelection() { setState(() { - comics.asMap().forEach((k, v) { - selectedComics[v] = !selectedComics.putIfAbsent(v, () => false); - }); - selectedComics.removeWhere((k, v) => !v); + if (searchMode) { + for (var c in searchResults) { + if (selectedComics.containsKey(c)) { + selectedComics.remove(c); + } else { + selectedComics[c] = true; + } + } + } else { + for (var c in comics) { + if (selectedComics.containsKey(c)) { + selectedComics.remove(c); + } else { + selectedComics[c] = true; + } + } + } }); }