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);