fixed issue #2
This commit is contained in:
@@ -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<LeaderboardPage> createState() => _LeaderboardPageState();
|
||||
}
|
||||
|
||||
class _LeaderboardPageState extends State<LeaderboardPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
// reset filter once, only when page is created
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
final provider = context.read<QuoteProvider>();
|
||||
provider.resetLeaderboardFilter();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final provider = context.watch<QuoteProvider>();
|
||||
|
||||
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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user