diff --git a/lib/main.dart b/lib/main.dart index b81a52d..2275d2e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'pages/bookmarks_page.dart'; import 'pages/collections_page.dart'; import 'service/storage.dart'; @@ -18,7 +19,10 @@ class MapsBookmarks extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), ), initialRoute: CollectionsPage.routeName, - routes: {CollectionsPage.routeName: (context) => const CollectionsPage()}, + routes: { + CollectionsPage.routeName: (context) => const CollectionsPage(), + BookmarksPage.routeName: (context) => const BookmarksPage(), + }, ); } } diff --git a/lib/pages/bookmarks_page.dart b/lib/pages/bookmarks_page.dart new file mode 100644 index 0000000..361d016 --- /dev/null +++ b/lib/pages/bookmarks_page.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; + +import '../service/bookmarks_provider.dart'; +import '../service/storage.dart'; + +class BookmarksPage extends StatelessWidget { + const BookmarksPage({super.key}); + + static const String routeName = '/bookmarks'; + + @override + Widget build(BuildContext context) { + if (BookmarksProvider.selectedCollectionId == null) { + Navigator.of(context).pop(); + } + final bookmarks = Storage.loadBookmarksForCollection( + BookmarksProvider.selectedCollectionId!, + ); + + BookmarksProvider.selectedCollectionId == null; + + return Scaffold( + appBar: AppBar( + title: Text( + Storage.loadCollections() + .firstWhere((c) => c.id == BookmarksProvider.selectedCollectionId) + .name, + ), + ), + body: ListView( + children: bookmarks.map((e) => ListTile(title: Text(e.name))).toList(), + ), + ); + } +} diff --git a/lib/pages/collections_page.dart b/lib/pages/collections_page.dart index 484ee7c..dcb633d 100644 --- a/lib/pages/collections_page.dart +++ b/lib/pages/collections_page.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import '../model/collection.dart'; +import '../service/bookmarks_provider.dart'; import '../service/storage.dart'; import '../widgets/create_bookmark_collection_dialog.dart'; +import 'bookmarks_page.dart'; class CollectionsPage extends StatefulWidget { const CollectionsPage({super.key}); @@ -43,6 +45,13 @@ class _CollectionsPageState extends State { } Widget itemBuilder(BuildContext context, int index) { - return ListTile(title: Text(collections.elementAt(index).name)); + final collection = collections.elementAt(index); + return ListTile( + title: Text(collection.name), + onTap: () { + BookmarksProvider.selectedCollectionId = collection.id; + Navigator.pushNamed(context, BookmarksPage.routeName); + }, + ); } } diff --git a/lib/service/bookmarks_provider.dart b/lib/service/bookmarks_provider.dart new file mode 100644 index 0000000..63f552f --- /dev/null +++ b/lib/service/bookmarks_provider.dart @@ -0,0 +1,3 @@ +class BookmarksProvider { + static int? selectedCollectionId; +}