From 18f0626e95befce350f434b53566b5615712c1ba Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Wed, 31 Dec 2025 18:33:09 +0100 Subject: [PATCH 1/3] Added empty statistics message --- .../views/main_menu/statistics_view.dart | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/lib/presentation/views/main_menu/statistics_view.dart b/lib/presentation/views/main_menu/statistics_view.dart index e94f2b6..0e95721 100644 --- a/lib/presentation/views/main_menu/statistics_view.dart +++ b/lib/presentation/views/main_menu/statistics_view.dart @@ -5,6 +5,7 @@ import 'package:game_tracker/data/dto/match.dart'; import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/presentation/widgets/app_skeleton.dart'; import 'package:game_tracker/presentation/widgets/tiles/statistics_tile.dart'; +import 'package:game_tracker/presentation/widgets/top_centered_message.dart'; import 'package:provider/provider.dart'; class StatisticsView extends StatefulWidget { @@ -58,31 +59,46 @@ class _StatisticsViewState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(height: constraints.maxHeight * 0.01), - StatisticsTile( - icon: Icons.sports_score, - title: 'Wins', - width: constraints.maxWidth * 0.95, - values: winCounts, - itemCount: 3, - barColor: Colors.blue, - ), - SizedBox(height: constraints.maxHeight * 0.02), - StatisticsTile( - icon: Icons.percent, - title: 'Winrate', - width: constraints.maxWidth * 0.95, - values: winRates, - itemCount: 5, - barColor: Colors.orange[700]!, - ), - SizedBox(height: constraints.maxHeight * 0.02), - StatisticsTile( - icon: Icons.casino, - title: 'Amount of Matches', - width: constraints.maxWidth * 0.95, - values: matchCounts, - itemCount: 10, - barColor: Colors.green, + Visibility( + visible: + winCounts.isEmpty && + matchCounts.isEmpty && + winRates.isEmpty, + replacement: Column( + children: [ + StatisticsTile( + icon: Icons.sports_score, + title: 'Wins', + width: constraints.maxWidth * 0.95, + values: winCounts, + itemCount: 3, + barColor: Colors.blue, + ), + SizedBox(height: constraints.maxHeight * 0.02), + StatisticsTile( + icon: Icons.percent, + title: 'Winrate', + width: constraints.maxWidth * 0.95, + values: winRates, + itemCount: 5, + barColor: Colors.orange[700]!, + ), + SizedBox(height: constraints.maxHeight * 0.02), + StatisticsTile( + icon: Icons.casino, + title: 'Amount of Matches', + width: constraints.maxWidth * 0.95, + values: matchCounts, + itemCount: 10, + barColor: Colors.green, + ), + ], + ), + child: const TopCenteredMessage( + icon: Icons.info, + title: 'Info', + message: 'No statistics available', + ), ), SizedBox(height: MediaQuery.paddingOf(context).bottom), ], From 175a9cb3490a3554fd10d24b9962a3a5426287c2 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Wed, 31 Dec 2025 18:36:33 +0100 Subject: [PATCH 2/3] Added hiding statistics tiles if their corresponding data is not available --- .../views/main_menu/statistics_view.dart | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/lib/presentation/views/main_menu/statistics_view.dart b/lib/presentation/views/main_menu/statistics_view.dart index 0e95721..46b01b7 100644 --- a/lib/presentation/views/main_menu/statistics_view.dart +++ b/lib/presentation/views/main_menu/statistics_view.dart @@ -66,32 +66,38 @@ class _StatisticsViewState extends State { winRates.isEmpty, replacement: Column( children: [ - StatisticsTile( - icon: Icons.sports_score, - title: 'Wins', - width: constraints.maxWidth * 0.95, - values: winCounts, - itemCount: 3, - barColor: Colors.blue, - ), - SizedBox(height: constraints.maxHeight * 0.02), - StatisticsTile( - icon: Icons.percent, - title: 'Winrate', - width: constraints.maxWidth * 0.95, - values: winRates, - itemCount: 5, - barColor: Colors.orange[700]!, - ), - SizedBox(height: constraints.maxHeight * 0.02), - StatisticsTile( - icon: Icons.casino, - title: 'Amount of Matches', - width: constraints.maxWidth * 0.95, - values: matchCounts, - itemCount: 10, - barColor: Colors.green, - ), + if (winCounts.isNotEmpty) ...[ + StatisticsTile( + icon: Icons.sports_score, + title: 'Wins', + width: constraints.maxWidth * 0.95, + values: winCounts, + itemCount: 3, + barColor: Colors.blue, + ), + SizedBox(height: constraints.maxHeight * 0.02), + ], + if (winRates.isNotEmpty) ...[ + StatisticsTile( + icon: Icons.percent, + title: 'Winrate', + width: constraints.maxWidth * 0.95, + values: winRates, + itemCount: 5, + barColor: Colors.orange[700]!, + ), + SizedBox(height: constraints.maxHeight * 0.02), + ], + if (matchCounts.isNotEmpty) ...[ + StatisticsTile( + icon: Icons.casino, + title: 'Amount of Matches', + width: constraints.maxWidth * 0.95, + values: matchCounts, + itemCount: 10, + barColor: Colors.green, + ), + ], ], ), child: const TopCenteredMessage( From 2b78617924fc29e30d138071b38cdd16ae4e3f64 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Wed, 31 Dec 2025 19:11:34 +0100 Subject: [PATCH 3/3] Redo seperate visibility --- .../views/main_menu/statistics_view.dart | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/lib/presentation/views/main_menu/statistics_view.dart b/lib/presentation/views/main_menu/statistics_view.dart index 46b01b7..0e95721 100644 --- a/lib/presentation/views/main_menu/statistics_view.dart +++ b/lib/presentation/views/main_menu/statistics_view.dart @@ -66,38 +66,32 @@ class _StatisticsViewState extends State { winRates.isEmpty, replacement: Column( children: [ - if (winCounts.isNotEmpty) ...[ - StatisticsTile( - icon: Icons.sports_score, - title: 'Wins', - width: constraints.maxWidth * 0.95, - values: winCounts, - itemCount: 3, - barColor: Colors.blue, - ), - SizedBox(height: constraints.maxHeight * 0.02), - ], - if (winRates.isNotEmpty) ...[ - StatisticsTile( - icon: Icons.percent, - title: 'Winrate', - width: constraints.maxWidth * 0.95, - values: winRates, - itemCount: 5, - barColor: Colors.orange[700]!, - ), - SizedBox(height: constraints.maxHeight * 0.02), - ], - if (matchCounts.isNotEmpty) ...[ - StatisticsTile( - icon: Icons.casino, - title: 'Amount of Matches', - width: constraints.maxWidth * 0.95, - values: matchCounts, - itemCount: 10, - barColor: Colors.green, - ), - ], + StatisticsTile( + icon: Icons.sports_score, + title: 'Wins', + width: constraints.maxWidth * 0.95, + values: winCounts, + itemCount: 3, + barColor: Colors.blue, + ), + SizedBox(height: constraints.maxHeight * 0.02), + StatisticsTile( + icon: Icons.percent, + title: 'Winrate', + width: constraints.maxWidth * 0.95, + values: winRates, + itemCount: 5, + barColor: Colors.orange[700]!, + ), + SizedBox(height: constraints.maxHeight * 0.02), + StatisticsTile( + icon: Icons.casino, + title: 'Amount of Matches', + width: constraints.maxWidth * 0.95, + values: matchCounts, + itemCount: 10, + barColor: Colors.green, + ), ], ), child: const TopCenteredMessage(