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}); static const String routeName = '/collections'; @override State createState() => _CollectionsPageState(); } class _CollectionsPageState extends State { final collections = Storage.loadCollections(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), floatingActionButton: FloatingActionButton( onPressed: onAddButtonPressed, child: Icon(Icons.add), ), body: ListView.builder( itemBuilder: itemBuilder, itemCount: collections.length, ), ); } void onAddButtonPressed() => showDialog( context: context, builder: (context) => CreateBookmarkCollectionDialog(onSavePressed: onCollectionSaved), ); void onCollectionSaved(String name) { collections.add(Collection(name: name)); setState(() {}); Storage.saveCollections(collections); } Widget itemBuilder(BuildContext context, int index) { final collection = collections.elementAt(index); return ListTile( title: Text(collection.name), onTap: () { BookmarksProvider.selectedCollectionId = collection.id; Navigator.pushNamed(context, BookmarksPage.routeName); }, ); } }