From cf88a9a37118e9dee60a1a8994b701225e4bfcbe Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 21 Jan 2026 13:19:45 +0100 Subject: [PATCH] added bookmark count number in collections view --- lib/pages/collections_list_page.dart | 6 ++++++ lib/service/storage.dart | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/pages/collections_list_page.dart b/lib/pages/collections_list_page.dart index 28197cf..10d731e 100644 --- a/lib/pages/collections_list_page.dart +++ b/lib/pages/collections_list_page.dart @@ -20,6 +20,7 @@ class CollectionsListPage extends StatefulWidget { class _CollectionsListPageState extends State { bool addingNewBookmark = false; + final bookmarkCountMap = Storage.loadPerCollectionBookmarkCount(); Widget bottomSheetBuilder(BuildContext context) { final titleTextFieldController = TextEditingController( @@ -53,6 +54,11 @@ class _CollectionsListPageState extends State { title: Text(collection.name), onTap: () => navigateToCollection(collection.id), onLongPress: () => onEditCollection(collection), + leading: const Icon(Icons.list_rounded), + trailing: Text( + bookmarkCountMap[collection.id]?.toString() ?? '0', + style: Theme.of(context).textTheme.bodyMedium, + ), ); } diff --git a/lib/service/storage.dart b/lib/service/storage.dart index a4b57f2..ef91ac2 100644 --- a/lib/service/storage.dart +++ b/lib/service/storage.dart @@ -50,6 +50,14 @@ class Storage { return allBookmarks.where((b) => b.collectionId == collectionId).toList(); } + static Map loadPerCollectionBookmarkCount() { + return loadBookmarks().fold({}, (map, bookmark) { + map[bookmark.collectionId] ??= 0; + map[bookmark.collectionId] = map[bookmark.collectionId]! + 1; + return map; + }); + } + static Future addBookmark(Bookmark bookmark) async { final bookmarks = loadBookmarks(); bookmarks.add(bookmark);