diff --git a/lib/presentation/views/points_view.dart b/lib/presentation/views/points_view.dart index a850bf2..2927d94 100644 --- a/lib/presentation/views/points_view.dart +++ b/lib/presentation/views/points_view.dart @@ -29,15 +29,15 @@ class _PointsViewState extends State { (constraints.maxWidth - roundColWidth - (tablePadding)) / playerCount; - return SingleChildScrollView( - scrollDirection: Axis.vertical, - child: ConstrainedBox( + return Column( + children: [ + ConstrainedBox( constraints: BoxConstraints(maxWidth: constraints.maxWidth), child: Padding( padding: const EdgeInsets.symmetric(horizontal: tablePadding), child: DataTable( - dataRowMaxHeight: 75, - dataRowMinHeight: 75, + dataRowMaxHeight: 0, + dataRowMinHeight: 0, columnSpacing: 0, horizontalMargin: 0, columns: [ @@ -73,116 +73,182 @@ class _PointsViewState extends State { ), ), ], - rows: [ - ...List.generate( - widget.gameSession.roundList.length, - (roundIndex) { - final round = - widget.gameSession.roundList[roundIndex]; - return DataRow( - cells: [ - DataCell(Align( - alignment: Alignment.center, + rows: const [], + ), + ), + ), + Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: ConstrainedBox( + constraints: + BoxConstraints(maxWidth: constraints.maxWidth), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: tablePadding), + child: DataTable( + dataRowMaxHeight: 75, + dataRowMinHeight: 75, + columnSpacing: 0, + horizontalMargin: 0, + headingRowHeight: 0, + columns: [ + const DataColumn( + label: SizedBox( + width: roundColWidth, child: Text( - '${roundIndex + 1}', - style: const TextStyle(fontSize: 20), + '#', + style: TextStyle(fontWeight: FontWeight.bold), + textAlign: TextAlign.center, ), - )), - ...List.generate( - widget.gameSession.players.length, - (playerIndex) { - final int score = round.scores[playerIndex]; - final int update = - round.scoreUpdates[playerIndex]; - final bool saidCabo = - round.caboPlayerIndex == playerIndex; - return DataCell(Center( + ), + numeric: true, + ), + ...widget.gameSession.players.map( + (player) => DataColumn( + label: SizedBox( + width: playerColWidth, child: Padding( padding: const EdgeInsets.symmetric( - vertical: 6.0), - child: Container( - width: playerColWidth * - (playerCount * - 0.2), // Adjust width based on amount of players - decoration: BoxDecoration( - color: saidCabo - ? CustomTheme.buttonBackgroundColor - : CupertinoColors.transparent, - borderRadius: BorderRadius.circular(5), - ), - child: Column( - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - const SizedBox( - height: 5, - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 6, vertical: 2), - decoration: BoxDecoration( - color: update <= 0 - ? CustomTheme.pointLossColor - : CustomTheme.pointGainColor, - borderRadius: - BorderRadius.circular(6), - ), - child: Text( - '${update >= 0 ? '+' : ''}$update', - style: const TextStyle( - color: CupertinoColors.white, - fontWeight: FontWeight.bold, - ), - ), - ), - const SizedBox(height: 4), - Text( - '$score', - style: TextStyle( - color: CustomTheme.white, - fontWeight: saidCabo - ? FontWeight.bold - : FontWeight.normal, - ), - ), - ], - ), + horizontal: 8), + child: Text( + player, + style: const TextStyle( + fontWeight: FontWeight.bold), + overflow: TextOverflow.ellipsis, + softWrap: true, + maxLines: 2, + textAlign: TextAlign.center, ), ), - )); - }), - ], - ); - }, - ), - DataRow( - cells: [ - const DataCell(Align( - alignment: Alignment.center, - child: Text( - 'Σ', - style: TextStyle( - fontSize: 25, fontWeight: FontWeight.bold), - ), - )), - ...widget.gameSession.playerScores.map( - (score) => DataCell( - Center( - child: Text( - '$score', - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold), ), ), ), - ), - ], + ], + rows: [ + ...List.generate( + widget.gameSession.roundList.length, + (roundIndex) { + final round = + widget.gameSession.roundList[roundIndex]; + return DataRow( + cells: [ + DataCell(Align( + alignment: Alignment.center, + child: Text( + '${roundIndex + 1}', + style: const TextStyle(fontSize: 20), + ), + )), + ...List.generate( + widget.gameSession.players.length, + (playerIndex) { + final int score = + round.scores[playerIndex]; + final int update = + round.scoreUpdates[playerIndex]; + final bool saidCabo = + round.caboPlayerIndex == playerIndex; + return DataCell(Center( + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 6.0), + child: Container( + width: playerColWidth * + (playerCount * + 0.2), // Adjust width based on amount of players + decoration: BoxDecoration( + color: saidCabo + ? CustomTheme + .buttonBackgroundColor + : CupertinoColors.transparent, + borderRadius: + BorderRadius.circular(5), + ), + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + const SizedBox( + height: 5, + ), + Container( + padding: const EdgeInsets + .symmetric( + horizontal: 6, + vertical: 2), + decoration: BoxDecoration( + color: update <= 0 + ? CustomTheme + .pointLossColor + : CustomTheme + .pointGainColor, + borderRadius: + BorderRadius.circular( + 6), + ), + child: Text( + '${update >= 0 ? '+' : ''}$update', + style: const TextStyle( + color: + CupertinoColors.white, + fontWeight: + FontWeight.bold, + ), + ), + ), + const SizedBox(height: 4), + Text( + '$score', + style: TextStyle( + color: CustomTheme.white, + fontWeight: saidCabo + ? FontWeight.bold + : FontWeight.normal, + ), + ), + ], + ), + ), + ), + )); + }), + ], + ); + }, + ), + DataRow( + cells: [ + const DataCell(Align( + alignment: Alignment.center, + child: Text( + 'Σ', + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold), + ), + )), + ...widget.gameSession.playerScores.map( + (score) => DataCell( + Center( + child: Text( + '$score', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold), + ), + ), + ), + ), + ], + ), + ], + ), ), - ], - ), - ), - )); + )), + ), + ], + ); }))); } } diff --git a/pubspec.yaml b/pubspec.yaml index 58f0816..f59ec44 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.5.5+636 +version: 0.5.5+639 environment: sdk: ^3.5.4