initial codex commit
Some checks failed
Release / build (push) Failing after 48s
Release / release-dev (push) Has been skipped
Release / release-master (push) Has been skipped
Release / windows-build (push) Has been cancelled

This commit is contained in:
2025-12-11 01:08:30 +00:00
parent e6d7e71a36
commit 40ee16d2d5
20 changed files with 2902 additions and 283 deletions

View File

@@ -4,8 +4,18 @@ import 'package:mileograph_flutter/services/dataService.dart';
import 'package:provider/provider.dart';
class LeaderboardPanel extends StatelessWidget {
const LeaderboardPanel({super.key});
@override
Widget build(BuildContext context) {
final data = context.watch<DataService>();
final leaderboard = data.homepageStats?.leaderboard ?? [];
if (data.isHomepageLoading && leaderboard.isEmpty) {
return const Padding(
padding: EdgeInsets.all(16.0),
child: Center(child: CircularProgressIndicator()),
);
}
return Padding(
padding: const EdgeInsets.all(10.0),
child: Card(
@@ -20,19 +30,23 @@ class LeaderboardPanel extends StatelessWidget {
decoration: TextDecoration.underline,
),
),
Column(
children: List.generate(
data.homepageStats?.leaderboard.length ?? 0,
(index) {
final leaderboardEntry =
data.homepageStats!.leaderboard[index];
return Container(
width: double.infinity,
child: Container(
margin: EdgeInsets.symmetric(horizontal: 0, vertical: 8),
if (leaderboard.isEmpty)
const Padding(
padding: EdgeInsets.all(16.0),
child: Text('No leaderboard data yet'),
)
else
Column(
children: List.generate(
leaderboard.length,
(index) {
final leaderboardEntry = leaderboard[index];
return Container(
width: double.infinity,
margin: const EdgeInsets.symmetric(
horizontal: 0, vertical: 8),
child: Padding(
padding: EdgeInsets.all(8),
padding: const EdgeInsets.all(8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -41,12 +55,12 @@ class LeaderboardPanel extends StatelessWidget {
children: [
TextSpan(
text: '${index + 1}. ',
style: TextStyle(
style: const TextStyle(
fontWeight: FontWeight.bold,
),
),
TextSpan(
text: '${leaderboardEntry.userFullName}',
text: leaderboardEntry.userFullName,
),
],
),
@@ -57,11 +71,10 @@ class LeaderboardPanel extends StatelessWidget {
],
),
),
),
);
},
);
},
),
),
),
],
),
),