From 30591db7f3bfc004c6a82170d3081e9c3bef8a4c Mon Sep 17 00:00:00 2001 From: odweta Date: Fri, 3 Apr 2026 18:13:27 +0200 Subject: [PATCH] fixed issue #2 --- frontend/lib/pages/leaderboard.dart | 20 +++++++++++++++++++- frontend/lib/provider/quote_provider.dart | 15 +++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/frontend/lib/pages/leaderboard.dart b/frontend/lib/pages/leaderboard.dart index efa0382..4c882a8 100644 --- a/frontend/lib/pages/leaderboard.dart +++ b/frontend/lib/pages/leaderboard.dart @@ -3,12 +3,29 @@ import 'package:frontend/provider/quote_provider.dart'; import 'package:frontend/values/constants.dart'; import 'package:provider/provider.dart'; -class LeaderboardPage extends StatelessWidget { +class LeaderboardPage extends StatefulWidget { const LeaderboardPage({super.key}); + @override + State createState() => _LeaderboardPageState(); +} + +class _LeaderboardPageState extends State { + @override + void initState() { + super.initState(); + + // reset filter once, only when page is created + WidgetsBinding.instance.addPostFrameCallback((_) { + final provider = context.read(); + provider.resetLeaderboardFilter(); + }); + } + @override Widget build(BuildContext context) { final provider = context.watch(); + return Center( child: Column( children: [ @@ -21,6 +38,7 @@ class LeaderboardPage extends StatelessWidget { Card( color: provider.getLeaderboardEntryBgColor(context, index), child: ListTile( + onTap: () { provider.showListPageFilteredByAuthor(context, index); }, contentPadding: EdgeInsets.symmetric( vertical: 0, horizontal: Constants.edgeInset, diff --git a/frontend/lib/provider/quote_provider.dart b/frontend/lib/provider/quote_provider.dart index 8c5b628..35b3702 100644 --- a/frontend/lib/provider/quote_provider.dart +++ b/frontend/lib/provider/quote_provider.dart @@ -1,5 +1,6 @@ // gets all quotes from the database and returns them in a list +import 'package:go_router/go_router.dart'; import 'package:path_provider/path_provider.dart'; import 'package:flutter/material.dart'; @@ -218,4 +219,18 @@ class QuoteProvider extends ChangeNotifier { return Theme.of(context).textTheme.bodyMedium!.color!; } } + + void showListPageFilteredByAuthor(BuildContext context, int index) { + filterController.text = sortedAuthorCounts[index].key; + filterBy = 0; // filter by author + // navigate to the main page + GoRouter.of(context).go('/'); + Future.microtask(() => notifyListeners()); + } + + void resetLeaderboardFilter() { + filterController.text = ''; + filterBy = 0; + notifyListeners(); + } } \ No newline at end of file