import 'package:flutter/material.dart'; import 'package:mchess/chess/chess_square_outer_dragtarget.dart'; import '../utils/chess_utils.dart'; class ChessSquare extends StatelessWidget { final ChessCoordinate coordinate; final ChessPiece? containedPiece; static const double pieceWidth = 200; static const double pieceHeight = 200; final Color color; const ChessSquare._({ required this.coordinate, required this.containedPiece, required this.color, }); factory ChessSquare( ChessCoordinate coord, ChessPiece? piece, bool wasPartOfLastMove) { Color lightSquaresColor = wasPartOfLastMove ? Colors.green.shade200 : Colors.brown.shade50; Color darkSquaresColor = wasPartOfLastMove ? Colors.green.shade300 : Colors.brown.shade400; Color squareColor; if (coord.row % 2 == 0) { if (coord.column % 2 == 0) { squareColor = darkSquaresColor; } else { squareColor = lightSquaresColor; } } else { if (coord.column % 2 == 0) { squareColor = lightSquaresColor; } else { squareColor = darkSquaresColor; } } return ChessSquare._( coordinate: coord, containedPiece: piece, color: squareColor, ); } @override Widget build(BuildContext context) { return Container( color: color, child: ChessSquareOuterDragTarget( coordinate: coordinate, containedPiece: containedPiece ?? const ChessPiece.none()), ); } }