Added common.dart
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 40s
Pull Request Pipeline / lint (pull_request) Successful in 46s

This commit is contained in:
2026-03-06 21:53:46 +01:00
parent 688a8a1706
commit a8ade294b5
5 changed files with 61 additions and 66 deletions

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:tallee/core/common.dart';
import 'package:tallee/core/custom_theme.dart';
import 'package:tallee/core/enums.dart';
import 'package:tallee/l10n/generated/app_localizations.dart';

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:tallee/core/adaptive_page_route.dart';
import 'package:tallee/core/common.dart';
import 'package:tallee/core/custom_theme.dart';
import 'package:tallee/data/db/database.dart';
import 'package:tallee/data/dto/match.dart';
@@ -146,7 +147,7 @@ class _MatchDetailViewState extends State<MatchDetailView> {
const SizedBox(width: 8),
Text(
// TODO: Update after DB changes
'${match.group!.name}${getExtraPlayerCount()}',
'${match.group!.name}${getExtraPlayerCount(match)}',
style: const TextStyle(fontWeight: FontWeight.bold),
),
],
@@ -262,26 +263,6 @@ class _MatchDetailViewState extends State<MatchDetailView> {
);
}
/// Counts how many players in the match are not part of the group
/// Returns the count as a string, or an empty string if there is no group
String getExtraPlayerCount() {
int count = 0;
final groupMembers = match.group!.members;
final players = match.players;
for (var player in players) {
if (!groupMembers.any((member) => member.id == player.id)) {
count++;
}
}
if (count == 0) {
return '';
}
return ' + ${count.toString()}';
}
/// Callback for when the match is updated in the edit view,
/// updates the match in this view
onMatchUpdated(editedMatch) {

View File

@@ -2,6 +2,7 @@ import 'dart:core' hide Match;
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:tallee/core/common.dart';
import 'package:tallee/core/custom_theme.dart';
import 'package:tallee/data/dto/match.dart';
import 'package:tallee/data/dto/player.dart';
@@ -51,6 +52,7 @@ class _MatchTileState extends State<MatchTile> {
@override
Widget build(BuildContext context) {
final match = widget.match;
final group = widget.match.group;
final winner = widget.match.winner;
final loc = AppLocalizations.of(context);
@@ -70,7 +72,7 @@ class _MatchTileState extends State<MatchTile> {
children: [
Expanded(
child: Text(
widget.match.name,
match.name,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
@@ -79,7 +81,7 @@ class _MatchTileState extends State<MatchTile> {
),
),
Text(
_formatDate(widget.match.createdAt, context),
_formatDate(match.createdAt, context),
style: const TextStyle(fontSize: 12, color: Colors.grey),
),
],
@@ -94,7 +96,7 @@ class _MatchTileState extends State<MatchTile> {
const SizedBox(width: 6),
Expanded(
child: Text(
'${group.name}${getExtraPlayerCount()}',
'${match.group!.name}${getExtraPlayerCount(match)}',
style: const TextStyle(fontSize: 14, color: Colors.grey),
overflow: TextOverflow.ellipsis,
),
@@ -109,7 +111,7 @@ class _MatchTileState extends State<MatchTile> {
const SizedBox(width: 6),
Expanded(
child: Text(
'${widget.match.players.length} ${loc.players}',
'${match.players.length} ${loc.players}',
style: const TextStyle(fontSize: 14, color: Colors.grey),
overflow: TextOverflow.ellipsis,
),
@@ -236,24 +238,4 @@ class _MatchTileState extends State<MatchTile> {
return '${loc.created_on} ${DateFormat.yMMMd(Localizations.localeOf(context).toString()).format(dateTime)}';
}
}
/// Counts how many players in the match are not part of the group
/// Returns the count as a string, or an empty string if there is no group
String getExtraPlayerCount() {
int count = 0;
final groupMembers = widget.match.group!.members;
final players = widget.match.players;
for (var player in players) {
if (!groupMembers.any((member) => member.id == player.id)) {
count++;
}
}
if (count == 0) {
return '';
}
return ' + ${count.toString()}';
}
}