Merge branch 'development' into feature/132-verschiedene-regelsaetze-implementieren
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 46s
Pull Request Pipeline / lint (pull_request) Successful in 54s

# Conflicts:
#	lib/core/common.dart
#	lib/presentation/views/main_menu/statistics_view.dart
#	lib/presentation/widgets/player_selection.dart
This commit is contained in:
2026-04-24 12:15:57 +02:00
17 changed files with 710 additions and 225 deletions

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:tallee/core/common.dart';
import 'package:tallee/core/constants.dart';
import 'package:tallee/core/custom_theme.dart';
import 'package:tallee/data/db/database.dart';
@@ -140,6 +141,7 @@ class _PlayerSelectionState extends State<PlayerSelection> {
padding: const EdgeInsets.only(right: 8.0),
child: TextIconTile(
text: player.name,
suffixText: getNameCountText(player),
onIconTap: () {
setState(() {
// Removes the player from the selection and notifies the parent.
@@ -193,6 +195,7 @@ class _PlayerSelectionState extends State<PlayerSelection> {
itemBuilder: (BuildContext context, int index) {
return TextIconListTile(
text: suggestedPlayers[index].name,
suffixText: getNameCountText(suggestedPlayers[index]),
onPressed: () {
setState(() {
// If the player is not already selected
@@ -282,7 +285,8 @@ class _PlayerSelectionState extends State<PlayerSelection> {
final loc = AppLocalizations.of(context);
final playerName = _searchBarController.text.trim();
final createdPlayer = Player(name: playerName);
int nameCount = _calculateNameCount(playerName);
final createdPlayer = Player(name: playerName, nameCount: nameCount);
final success = await db.playerDao.addPlayer(player: createdPlayer);
if (!context.mounted) return;
@@ -295,6 +299,22 @@ class _PlayerSelectionState extends State<PlayerSelection> {
}
}
int _calculateNameCount(String playerName) {
final playersWithSameName =
allPlayers.where((player) => player.name == playerName).toList()
..sort((a, b) => a.nameCount.compareTo(b.nameCount));
if (playersWithSameName.isEmpty) {
return 0;
} else if (playersWithSameName.length == 1) {
// Initialize nameCount
playersWithSameName[0].nameCount = 1;
}
// Return following count
return playersWithSameName.length + 1;
}
/// Updates the state after successfully adding a new player.
void _handleSuccessfulPlayerCreation(Player player) {
selectedPlayers.insert(0, player);