From 8d8d4319d248ec6a7934bdc126df419ed4923e3a Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:37:51 +0100 Subject: [PATCH 01/10] change Mediaquery.of to .sizeOf --- lib/presentation/widgets/full_width_button.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/presentation/widgets/full_width_button.dart b/lib/presentation/widgets/full_width_button.dart index 2af6abe..bd18c64 100644 --- a/lib/presentation/widgets/full_width_button.dart +++ b/lib/presentation/widgets/full_width_button.dart @@ -12,7 +12,7 @@ class FullWidthButton extends StatelessWidget { return ElevatedButton( onPressed: onPressed, style: ElevatedButton.styleFrom( - minimumSize: Size(MediaQuery.of(context).size.width * 0.90, 60), + minimumSize: Size(MediaQuery.sizeOf(context).width * 0.9, 60), backgroundColor: CustomTheme.primaryColor, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), ), From 38466c6056a8e05d6d8eded63dcc37ac68cdd691 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:38:08 +0100 Subject: [PATCH 02/10] added title and icon to gamehistoryview --- lib/presentation/views/main_menu/game_history_view.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/presentation/views/main_menu/game_history_view.dart b/lib/presentation/views/main_menu/game_history_view.dart index f620cd7..3642a88 100644 --- a/lib/presentation/views/main_menu/game_history_view.dart +++ b/lib/presentation/views/main_menu/game_history_view.dart @@ -178,9 +178,15 @@ class _GameHistoryViewState extends State { Widget gameHistoryListView(allGameData, suggestedGameData) { if (suggestedGameData.isEmpty && allGameData.isEmpty) { - return TopCenteredMessage(message: "Keine Spiele erstellt"); + return TopCenteredMessage( + icon: Icons.info, + title: "Info", + message: "Keine Spiele erstellt", + ); } else if (suggestedGameData.isEmpty) { return TopCenteredMessage( + icon: Icons.search, + title: "Info", message: "Kein Spiel mit den Suchparametern gefunden.", ); } From deab074885001a0f4ef6451ebdaeaa1fdfff6294 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:38:26 +0100 Subject: [PATCH 03/10] changed font sizes & tile width --- lib/presentation/widgets/{ => tiles}/group_tile.dart | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) rename lib/presentation/widgets/{ => tiles}/group_tile.dart (90%) diff --git a/lib/presentation/widgets/group_tile.dart b/lib/presentation/widgets/tiles/group_tile.dart similarity index 90% rename from lib/presentation/widgets/group_tile.dart rename to lib/presentation/widgets/tiles/group_tile.dart index ce6ba34..448c68c 100644 --- a/lib/presentation/widgets/group_tile.dart +++ b/lib/presentation/widgets/tiles/group_tile.dart @@ -11,8 +11,7 @@ class GroupTile extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - width: MediaQuery.of(context).size.width * 0.90, - margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 10), decoration: BoxDecoration( color: CustomTheme.boxColor, @@ -30,7 +29,7 @@ class GroupTile extends StatelessWidget { overflow: TextOverflow.ellipsis, style: const TextStyle( fontWeight: FontWeight.bold, - fontSize: 20, + fontSize: 18, ), ), const Spacer(), @@ -38,11 +37,11 @@ class GroupTile extends StatelessWidget { '${group.members.length}', style: const TextStyle( fontWeight: FontWeight.w900, - fontSize: 20, + fontSize: 18, ), ), const SizedBox(width: 3), - const Icon(Icons.group), + const Icon(Icons.group, size: 22), ], ), const SizedBox(height: 5), @@ -66,7 +65,7 @@ class GroupTile extends StatelessWidget { child: Text( member.name, style: const TextStyle( - fontSize: 17, + fontSize: 14, fontWeight: FontWeight.bold, ), ), From 258f610e289b0c7bae92babbac77111d4bc11b85 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:39:34 +0100 Subject: [PATCH 04/10] added icons & titles to top contered messages --- lib/presentation/views/main_menu/groups_view.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/presentation/views/main_menu/groups_view.dart b/lib/presentation/views/main_menu/groups_view.dart index 6a3f404..7b79a53 100644 --- a/lib/presentation/views/main_menu/groups_view.dart +++ b/lib/presentation/views/main_menu/groups_view.dart @@ -4,7 +4,7 @@ import 'package:game_tracker/data/db/database.dart'; import 'package:game_tracker/data/dto/group.dart'; import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/presentation/widgets/full_width_button.dart'; -import 'package:game_tracker/presentation/widgets/group_tile.dart'; +import 'package:game_tracker/presentation/widgets/tiles/group_tile.dart'; import 'package:game_tracker/presentation/widgets/top_centered_message.dart'; import 'package:provider/provider.dart'; import 'package:skeletonizer/skeletonizer.dart'; @@ -50,7 +50,9 @@ class _GroupsViewState extends State { if (snapshot.hasError) { return const Center( child: TopCenteredMessage( - message: 'Error while loading group data.', + icon: Icons.report, + title: "Error", + message: 'Group data couldn\'t\nbe loaded.', ), ); } @@ -58,6 +60,8 @@ class _GroupsViewState extends State { (!snapshot.hasData || snapshot.data!.isEmpty)) { return const Center( child: TopCenteredMessage( + icon: Icons.info, + title: "Info", message: 'No groups created yet.', ), ); From c1e032208cd79d6d28d01b2963ef8f70b89e786d Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:39:48 +0100 Subject: [PATCH 05/10] added icons, titles and changed font size --- .../widgets/top_centered_message.dart | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/presentation/widgets/top_centered_message.dart b/lib/presentation/widgets/top_centered_message.dart index df8dcb1..af317d8 100644 --- a/lib/presentation/widgets/top_centered_message.dart +++ b/lib/presentation/widgets/top_centered_message.dart @@ -1,9 +1,16 @@ import 'package:flutter/material.dart'; class TopCenteredMessage extends StatelessWidget { - const TopCenteredMessage({super.key, required this.message}); + const TopCenteredMessage({ + super.key, + required this.icon, + required this.title, + required this.message, + }); + final String title; final String message; + final IconData icon; @override Widget build(BuildContext context) { @@ -11,10 +18,21 @@ class TopCenteredMessage extends StatelessWidget { padding: const EdgeInsets.only(top: 100), margin: const EdgeInsets.symmetric(horizontal: 10), alignment: Alignment.topCenter, - child: Text( - message, - style: const TextStyle(fontSize: 20), - textAlign: TextAlign.center, + child: Column( + children: [ + Icon(icon, size: 45), + SizedBox(height: 10), + Text( + title, + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + ), + Text( + message, + style: const TextStyle(fontSize: 16), + textAlign: TextAlign.center, + ), + ], ), ); } From accc1899493beddb472312248e4c15227dc9f60f Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:50:54 +0100 Subject: [PATCH 06/10] decreased number of tiles in skeleton --- lib/presentation/views/main_menu/groups_view.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/presentation/views/main_menu/groups_view.dart b/lib/presentation/views/main_menu/groups_view.dart index 7b79a53..11e2544 100644 --- a/lib/presentation/views/main_menu/groups_view.dart +++ b/lib/presentation/views/main_menu/groups_view.dart @@ -21,11 +21,11 @@ class _GroupsViewState extends State { final player = Player(id: 'p1', name: 'Sample'); late final List skeletonData = List.filled( - 8, + 7, Group( id: '0', name: 'Sample Game', - members: [player, player, player, player], + members: [player, player, player, player, player, player], ), ); @@ -68,16 +68,17 @@ class _GroupsViewState extends State { } final bool isLoading = snapshot.connectionState == ConnectionState.waiting; - final List groups = isLoading - ? skeletonData - : (snapshot.data ?? []); + final List groups = skeletonData; + //final List groups = isLoading + // ? skeletonData + // : (snapshot.data ?? []); return Skeletonizer( effect: PulseEffect( from: Colors.grey[800]!, to: Colors.grey[600]!, duration: const Duration(milliseconds: 800), ), - enabled: isLoading, + enabled: true, enableSwitchAnimation: true, switchAnimationConfig: const SwitchAnimationConfig( duration: Duration(milliseconds: 200), From 4befc85c9f9492b6bb3ce0eaa412aba9cf7a1354 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:52:31 +0100 Subject: [PATCH 07/10] added missing const --- lib/presentation/widgets/top_centered_message.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/presentation/widgets/top_centered_message.dart b/lib/presentation/widgets/top_centered_message.dart index af317d8..a5deea2 100644 --- a/lib/presentation/widgets/top_centered_message.dart +++ b/lib/presentation/widgets/top_centered_message.dart @@ -21,7 +21,7 @@ class TopCenteredMessage extends StatelessWidget { child: Column( children: [ Icon(icon, size: 45), - SizedBox(height: 10), + const SizedBox(height: 10), Text( title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), From 9ffb7d6ca3c684379eeb34d1e6893fe3a9cceac4 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 19:53:32 +0100 Subject: [PATCH 08/10] changed skeleton to only show when loading --- lib/presentation/views/main_menu/groups_view.dart | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/presentation/views/main_menu/groups_view.dart b/lib/presentation/views/main_menu/groups_view.dart index 11e2544..8b3bffe 100644 --- a/lib/presentation/views/main_menu/groups_view.dart +++ b/lib/presentation/views/main_menu/groups_view.dart @@ -68,17 +68,16 @@ class _GroupsViewState extends State { } final bool isLoading = snapshot.connectionState == ConnectionState.waiting; - final List groups = skeletonData; - //final List groups = isLoading - // ? skeletonData - // : (snapshot.data ?? []); + final List groups = isLoading + ? skeletonData + : (snapshot.data ?? []); return Skeletonizer( effect: PulseEffect( from: Colors.grey[800]!, to: Colors.grey[600]!, duration: const Duration(milliseconds: 800), ), - enabled: true, + enabled: isLoading, enableSwitchAnimation: true, switchAnimationConfig: const SwitchAnimationConfig( duration: Duration(milliseconds: 200), From a1d57fc42424dd625e7f79b83de54c49c156a20f Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 20:04:59 +0100 Subject: [PATCH 09/10] removed sample data for group view --- lib/main.dart | 73 --------------------------------------------------- 1 file changed, 73 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index b19eb45..98c40f8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:game_tracker/core/custom_theme.dart'; import 'package:game_tracker/data/db/database.dart'; -import 'package:game_tracker/data/dto/group.dart'; -import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/presentation/views/main_menu/custom_navigation_bar.dart'; import 'package:provider/provider.dart'; @@ -21,7 +19,6 @@ class GameTracker extends StatelessWidget { @override Widget build(BuildContext context) { - addSampleGroupData(context); return MaterialApp( debugShowCheckedModeBanner: false, title: 'Game Tracker', @@ -42,74 +39,4 @@ class GameTracker extends StatelessWidget { home: const CustomNavigationBar(), ); } - - Future addSampleGroupData(BuildContext context) async { - final db = Provider.of(context, listen: false); - if (await db.groupDao.getGroupCount() == 0) { - final List allPlayers = [ - Player(id: '1', name: 'Alex'), - Player(id: '2', name: 'Ben'), - Player(id: '3', name: 'Chris'), - Player(id: '4', name: 'Daniel'), - Player(id: '5', name: 'Max Mustermann'), - Player(id: '6', name: 'Sebastian'), - Player(id: '7', name: 'Jonathan'), - Player(id: '8', name: 'Alexander'), - ]; - - // 2. Erstelle und füge 8 Gruppen mit unterschiedlicher Spieleranzahl hinzu - await db.groupDao.addGroup( - group: Group( - id: '1', - name: 'Anfänger', - members: allPlayers.sublist(0, 3), - ), - ); // 3 Spieler - await db.groupDao.addGroup( - group: Group( - id: '2', - name: 'Die glorreichen Sieben', - members: allPlayers.sublist(0, 7), - ), - ); // 7 Spieler - await db.groupDao.addGroup( - group: Group( - id: '3', - name: 'Profis', - members: allPlayers.sublist(4, 8), - ), - ); // 4 Spieler - await db.groupDao.addGroup( - group: Group( - id: '4', - name: 'Duo Infernale', - members: [allPlayers[0], allPlayers[7]], - ), - ); // 2 Spieler - await db.groupDao.addGroup( - group: Group( - id: '5', - name: 'Die fantastischen Fünf', - members: allPlayers.sublist(1, 6), - ), - ); // 5 Spieler - await db.groupDao.addGroup( - group: Group( - id: '6', - name: 'Feierabend-Zocker', - members: allPlayers.sublist(0, 6), - ), - ); // 6 Spieler - await db.groupDao.addGroup( - group: Group(id: '7', name: 'Alle Mann an Bord!', members: allPlayers), - ); // 8 Spieler - await db.groupDao.addGroup( - group: Group( - id: '8', - name: 'Testgruppe Alpha', - members: [allPlayers[1], allPlayers[3]], - ), - ); - } - } } From 10a45ac1f0cae5c0b00a8476a0a9e21fd4831df4 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Sun, 16 Nov 2025 20:11:10 +0100 Subject: [PATCH 10/10] removed unneccessary double quotes --- lib/presentation/views/main_menu/groups_view.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/views/main_menu/groups_view.dart b/lib/presentation/views/main_menu/groups_view.dart index 8b3bffe..7f1f32d 100644 --- a/lib/presentation/views/main_menu/groups_view.dart +++ b/lib/presentation/views/main_menu/groups_view.dart @@ -51,7 +51,7 @@ class _GroupsViewState extends State { return const Center( child: TopCenteredMessage( icon: Icons.report, - title: "Error", + title: 'Error', message: 'Group data couldn\'t\nbe loaded.', ), ); @@ -61,7 +61,7 @@ class _GroupsViewState extends State { return const Center( child: TopCenteredMessage( icon: Icons.info, - title: "Info", + title: 'Info', message: 'No groups created yet.', ), );