added bookmarks page

This commit is contained in:
2025-09-19 21:54:47 +02:00
parent a4d760a970
commit 2d93d1a9d7
4 changed files with 53 additions and 2 deletions

View File

@@ -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(),
},
);
}
}

View File

@@ -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(),
),
);
}
}

View File

@@ -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<CollectionsPage> {
}
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);
},
);
}
}

View File

@@ -0,0 +1,3 @@
class BookmarksProvider {
static int? selectedCollectionId;
}