From ff655e2dcf5c073a6821a78f68fab47e20b3b3b1 Mon Sep 17 00:00:00 2001 From: Odweta Date: Mon, 23 Mar 2026 11:50:17 +0100 Subject: [PATCH] filtering by author works --- frontend/lib/pages/list.dart | 6 ++--- frontend/lib/provider/quote_provider.dart | 30 +++++++++++------------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/frontend/lib/pages/list.dart b/frontend/lib/pages/list.dart index f1db0f8..6706c7b 100644 --- a/frontend/lib/pages/list.dart +++ b/frontend/lib/pages/list.dart @@ -30,7 +30,7 @@ class ListPage extends StatelessWidget { return Center(child: Text(provider.error!)); } - final quoteCount = provider.quotes.length; + final quoteCount = provider.filteredQuotes.length; return Column( @@ -229,9 +229,7 @@ class ListPage extends StatelessWidget { ), IconButton( icon: Icon(Icons.search), - onPressed: () { - provider.filterQuotes; - }, + onPressed: provider.filterQuotes, ), IconButton( icon: Icon(Icons.more_horiz), diff --git a/frontend/lib/provider/quote_provider.dart b/frontend/lib/provider/quote_provider.dart index 1a53134..c2cac4b 100644 --- a/frontend/lib/provider/quote_provider.dart +++ b/frontend/lib/provider/quote_provider.dart @@ -13,10 +13,23 @@ class QuoteProvider extends ChangeNotifier { String? _error; List get quotes => _quotes; - List get filteredQuotes => _filteredQuotes; Set get authors => _authors; bool get loading => _loading; String? get error => _error; + List get filteredQuotes { + final query = filterController.text.toLowerCase(); + + return _quotes.where((quote) { + switch (filterBy) { + case 0: + return quote.author.toLowerCase().contains(query); + case 1: + return quote.body.toLowerCase().contains(query); + default: + return true; + } + }).toList(); + } final QuoteRepository repo = QuoteRepository(); @@ -39,21 +52,6 @@ class QuoteProvider extends ChangeNotifier { } void filterQuotes() { - _filteredQuotes = []; - for (var quote in _quotes) { - switch (filterBy) { - case 0: - if (quote.author.toLowerCase() == filterController.text.toLowerCase()) { - _filteredQuotes.add(quote); - } - break; - case 1: - if (quote.body.toLowerCase().contains(filterController.text.toLowerCase())) { - _filteredQuotes.add(quote); - } - break; - } - } notifyListeners(); }