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]], - ), - ); - } - } } 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.", ); } diff --git a/lib/presentation/views/main_menu/groups_view.dart b/lib/presentation/views/main_menu/groups_view.dart index 6a3f404..7f1f32d 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'; @@ -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], ), ); @@ -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.', ), ); 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)), ), 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, ), ), diff --git a/lib/presentation/widgets/top_centered_message.dart b/lib/presentation/widgets/top_centered_message.dart index df8dcb1..a5deea2 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), + const 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, + ), + ], ), ); }