diff --git a/lib/presentation/views/main_menu/home_view.dart b/lib/presentation/views/main_menu/home_view.dart index 680afde..3fe85fd 100644 --- a/lib/presentation/views/main_menu/home_view.dart +++ b/lib/presentation/views/main_menu/home_view.dart @@ -7,8 +7,8 @@ import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/l10n/generated/app_localizations.dart'; import 'package:game_tracker/presentation/widgets/app_skeleton.dart'; import 'package:game_tracker/presentation/widgets/buttons/quick_create_button.dart'; -import 'package:game_tracker/presentation/widgets/tiles/game_tile.dart'; import 'package:game_tracker/presentation/widgets/tiles/info_tile.dart'; +import 'package:game_tracker/presentation/widgets/tiles/match_summary_tile.dart'; import 'package:game_tracker/presentation/widgets/tiles/quick_info_tile.dart'; import 'package:provider/provider.dart'; @@ -123,7 +123,7 @@ class _HomeViewState extends State { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - MatchTile( + MatchSummaryTile( matchTitle: recentMatches[0].name, game: AppLocalizations.of(context)!.winner_label, ruleset: AppLocalizations.of( @@ -141,7 +141,7 @@ class _HomeViewState extends State { child: Divider(), ), if (loadedRecentMatches.length > 1) ...[ - MatchTile( + MatchSummaryTile( matchTitle: recentMatches[1].name, game: AppLocalizations.of( context, @@ -173,7 +173,6 @@ class _HomeViewState extends State { ), ), ), - // TODO: Implement quick create functionality InfoTile( width: constraints.maxWidth * 0.95, title: AppLocalizations.of(context)!.quick_create, diff --git a/lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart b/lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart index b72a4fa..63da16d 100644 --- a/lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart +++ b/lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart @@ -32,6 +32,9 @@ class _CreateMatchViewState extends State { /// Controller for the match name input field final TextEditingController _matchNameController = TextEditingController(); + /// Hint text for the match name input field + String hintText = 'Match Name'; + /// List of all groups from the database List groupsList = []; @@ -132,7 +135,7 @@ class _CreateMatchViewState extends State { margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), child: TextInputField( controller: _matchNameController, - hintText: AppLocalizations.of(context)!.match_name, + hintText: hintText, ), ), ChooseTile( @@ -151,11 +154,13 @@ class _CreateMatchViewState extends State { ); setState(() { if (selectedGameIndex != -1) { + hintText = games[selectedGameIndex].$1; selectedRuleset = games[selectedGameIndex].$3; selectedRulesetIndex = _getRulesets( context, ).indexWhere((r) => r.$1 == selectedRuleset); } else { + hintText = 'Match Name'; selectedRuleset = null; } }); @@ -230,7 +235,9 @@ class _CreateMatchViewState extends State { onPressed: _enableCreateGameButton() ? () async { Match match = Match( - name: _matchNameController.text.trim(), + name: _matchNameController.text.isEmpty + ? hintText + : _matchNameController.text.trim(), createdAt: DateTime.now(), group: selectedGroup, players: selectedPlayers, @@ -260,9 +267,8 @@ class _CreateMatchViewState extends State { /// Determines whether the "Create Game" button should be enabled based on /// the current state of the input fields. bool _enableCreateGameButton() { - return _matchNameController.text.isNotEmpty && - (selectedGroup != null || - (selectedPlayers != null && selectedPlayers!.length > 1)) && - selectedRuleset != null; + return selectedGroup != null || + (selectedPlayers != null && selectedPlayers!.length > 1) && + selectedRuleset != null; } } diff --git a/lib/presentation/views/main_menu/match_view/match_view.dart b/lib/presentation/views/main_menu/match_view/match_view.dart index 5542fc2..30804de 100644 --- a/lib/presentation/views/main_menu/match_view/match_view.dart +++ b/lib/presentation/views/main_menu/match_view/match_view.dart @@ -13,7 +13,7 @@ import 'package:game_tracker/presentation/views/main_menu/match_view/create_matc import 'package:game_tracker/presentation/views/main_menu/match_view/match_result_view.dart'; import 'package:game_tracker/presentation/widgets/app_skeleton.dart'; import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart'; -import 'package:game_tracker/presentation/widgets/tiles/game_history_tile.dart'; +import 'package:game_tracker/presentation/widgets/tiles/match_tile.dart'; import 'package:game_tracker/presentation/widgets/top_centered_message.dart'; import 'package:provider/provider.dart'; @@ -31,9 +31,9 @@ class _MatchViewState extends State { List matches = List.filled( 4, Match( - name: 'Skeleton Gamename', + name: 'Skeleton match name', group: Group( - name: 'Groupname', + name: 'Group name', members: List.filled(5, Player(name: 'Player')), ), winner: Player(name: 'Player'), @@ -75,7 +75,7 @@ class _MatchViewState extends State { height: MediaQuery.paddingOf(context).bottom - 20, ); } - return GameHistoryTile( + return MatchTile( onTap: () async { Navigator.push( context, diff --git a/lib/presentation/widgets/tiles/game_tile.dart b/lib/presentation/widgets/tiles/match_summary_tile.dart similarity index 92% rename from lib/presentation/widgets/tiles/game_tile.dart rename to lib/presentation/widgets/tiles/match_summary_tile.dart index f98f425..719037b 100644 --- a/lib/presentation/widgets/tiles/game_tile.dart +++ b/lib/presentation/widgets/tiles/match_summary_tile.dart @@ -2,14 +2,14 @@ import 'package:flutter/material.dart'; import 'package:game_tracker/core/custom_theme.dart'; import 'package:skeletonizer/skeletonizer.dart'; -class MatchTile extends StatefulWidget { +class MatchSummaryTile extends StatefulWidget { final String matchTitle; final String game; final String ruleset; final String players; final String winner; - const MatchTile({ + const MatchSummaryTile({ super.key, required this.matchTitle, required this.game, @@ -19,10 +19,10 @@ class MatchTile extends StatefulWidget { }); @override - State createState() => _MatchTileState(); + State createState() => _MatchSummaryTileState(); } -class _MatchTileState extends State { +class _MatchSummaryTileState extends State { @override Widget build(BuildContext context) { return Column( diff --git a/lib/presentation/widgets/tiles/game_history_tile.dart b/lib/presentation/widgets/tiles/match_tile.dart similarity index 95% rename from lib/presentation/widgets/tiles/game_history_tile.dart rename to lib/presentation/widgets/tiles/match_tile.dart index 091935e..9eedec6 100644 --- a/lib/presentation/widgets/tiles/game_history_tile.dart +++ b/lib/presentation/widgets/tiles/match_tile.dart @@ -5,17 +5,17 @@ import 'package:game_tracker/l10n/generated/app_localizations.dart'; import 'package:game_tracker/presentation/widgets/tiles/text_icon_tile.dart'; import 'package:intl/intl.dart'; -class GameHistoryTile extends StatefulWidget { +class MatchTile extends StatefulWidget { final Match match; final VoidCallback onTap; - const GameHistoryTile({super.key, required this.match, required this.onTap}); + const MatchTile({super.key, required this.match, required this.onTap}); @override - State createState() => _GameHistoryTileState(); + State createState() => _MatchTileState(); } -class _GameHistoryTileState extends State { +class _MatchTileState extends State { @override Widget build(BuildContext context) { final group = widget.match.group;