From a4d760a970318aacf775459caa8b73f1f853e6d6 Mon Sep 17 00:00:00 2001 From: marco Date: Fri, 19 Sep 2025 21:04:57 +0200 Subject: [PATCH] added logic to save collections and display them --- lib/pages/collections_page.dart | 27 ++++++++++++++----- .../create_bookmark_collection_dialog.dart | 16 +++++++++-- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/lib/pages/collections_page.dart b/lib/pages/collections_page.dart index f0d59ca..484ee7c 100644 --- a/lib/pages/collections_page.dart +++ b/lib/pages/collections_page.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import '../model/collection.dart'; +import '../service/storage.dart'; import '../widgets/create_bookmark_collection_dialog.dart'; class CollectionsPage extends StatefulWidget { @@ -11,23 +13,36 @@ class CollectionsPage extends StatefulWidget { } class _CollectionsPageState extends State { + final collections = Storage.loadCollections(); + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), floatingActionButton: FloatingActionButton( - onPressed: () => showDialog( - context: context, - builder: (context) => CreateBookmarkCollectionDialog(), - ), + onPressed: onAddButtonPressed, child: Icon(Icons.add), ), - body: ListView(), + body: ListView.builder( + itemBuilder: itemBuilder, + itemCount: collections.length, + ), ); } void onAddButtonPressed() => showDialog( context: context, - builder: (context) => CreateBookmarkCollectionDialog(), + builder: (context) => + CreateBookmarkCollectionDialog(onSavePressed: onCollectionSaved), ); + + void onCollectionSaved(String name) { + collections.add(Collection(name: name)); + setState(() {}); + Storage.saveCollections(collections); + } + + Widget itemBuilder(BuildContext context, int index) { + return ListTile(title: Text(collections.elementAt(index).name)); + } } diff --git a/lib/widgets/create_bookmark_collection_dialog.dart b/lib/widgets/create_bookmark_collection_dialog.dart index c93a61f..28ae232 100644 --- a/lib/widgets/create_bookmark_collection_dialog.dart +++ b/lib/widgets/create_bookmark_collection_dialog.dart @@ -2,13 +2,19 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class CreateBookmarkCollectionDialog extends StatelessWidget { - const CreateBookmarkCollectionDialog({super.key}); + const CreateBookmarkCollectionDialog({ + super.key, + required this.onSavePressed, + }); + final void Function(String name) onSavePressed; @override Widget build(BuildContext context) { + final nameController = TextEditingController(); return AlertDialog( title: Text('Create Collection'), content: TextField( + controller: nameController, autofocus: true, maxLines: 1, maxLength: 50, @@ -22,7 +28,13 @@ class CreateBookmarkCollectionDialog extends StatelessWidget { ), ), actions: [ - FloatingActionButton(onPressed: () {}, child: Icon(Icons.save)), + FloatingActionButton( + onPressed: () { + onSavePressed(nameController.text); + Navigator.of(context).pop(); + }, + child: Icon(Icons.save), + ), ], ); }