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:frontend/values/constants.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class LeaderboardPage extends StatelessWidget {
|
class LeaderboardPage extends StatefulWidget {
|
||||||
const LeaderboardPage({super.key});
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final provider = context.watch<QuoteProvider>();
|
final provider = context.watch<QuoteProvider>();
|
||||||
|
|
||||||
return Center(
|
return Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
@@ -21,6 +38,7 @@ class LeaderboardPage extends StatelessWidget {
|
|||||||
Card(
|
Card(
|
||||||
color: provider.getLeaderboardEntryBgColor(context, index),
|
color: provider.getLeaderboardEntryBgColor(context, index),
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
|
onTap: () { provider.showListPageFilteredByAuthor(context, index); },
|
||||||
contentPadding: EdgeInsets.symmetric(
|
contentPadding: EdgeInsets.symmetric(
|
||||||
vertical: 0,
|
vertical: 0,
|
||||||
horizontal: Constants.edgeInset,
|
horizontal: Constants.edgeInset,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
// gets all quotes from the database and returns them in a list
|
// 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:path_provider/path_provider.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
@@ -218,4 +219,18 @@ class QuoteProvider extends ChangeNotifier {
|
|||||||
return Theme.of(context).textTheme.bodyMedium!.color!;
|
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