v1.1.2flutter_stateless_chessboard
A Chessboard Widget for Flutter. This package provides just the chessboard. The game logic can be implemented using chess library.
Chessboard Widget for Flutter
English project snapshot. Visit GitHub for the latest content.
A Stateless Chessboard Widget for Flutter. This package provides just the chessboard. The game logic can be implemented using chess library. Check example/main.dart file, for implementing game logic.
To use Chessboard widget, add flutter_stateless_chessboard as a dependency in your pubspec.yaml
void main() {
runApp(
new MaterialApp(
home: Scaffold(
body: Center(
child: Chessboard(
size: 300,
fen: "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
onMove: (move) {
// optional
// TODO: process the move
print("move from ${move.from} to ${move.to}");
},
orientation: BoardColor.BLACK, // optional
lightSquareColor: Color.fromRGBO(240, 217, 181, 1), // optional
darkSquareColor: Color.fromRGBO(181, 136, 99, 1), // optional
),
),
),
),
);
}
For handling promotion. You can implement onPromote param. And return the PieceType you want to promote to. See below example.
Chessboard(
fen: "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
size: 400,
onMove: ...,
onPromote: () {
return showDialog<PieceType>(
context: context,
builder: (_) {
return AlertDialog(
title: Text('Promotion'),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
title: Text("Queen"),
onTap: () => navigator.pop(PieceType.QUEEN),
),
ListTile(
title: Text("Rook"),
onTap: () => navigator.pop(PieceType.ROOK),
),
ListTile(
title: Text("Bishop"),
onTap: () => navigator.pop(PieceType.BISHOP),
),
ListTile(
title: Text("Knight"),
onTap: () => navigator.pop(PieceType.KNIGHT),
),
],
),
);
},
);
},
);
By default, library uses chess_vectors_flutter for pieces. But you can build your own piece widget by implementing buildPiece param. See below example.
Chessboard(
fen: "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
size: 400,
buildPiece: (piece, size) {
if (piece == Piece.WHITE_PAWN) {
return Icon(
Icons.person,
size: size,
color: Colors.white,
);
} else if (piece == Piece.BLACK_PAWN) {
return Icon(
Icons.person,
size: size,
color: Colors.black,
);
}
},
);
If you don't return widget for a PieceType default widget will be rendered. This is how the above Chessboard will look.
fen that should be show on the board (example rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1)
Size of the chessboard widget
Called when a move is made on the board. Passing a ShortMove(from, to, promotion).
Specify orientation of the chessboard.
color of light square on chessboard.
color of dart square on chessboard.
handle piece promotion
handle building of custom piece
Dependency list 6 items
{"sdk":"flutter"}^1.0.16^0.7.0^0.0.12^6.0.1{"sdk":"flutter"}Start with your use case, compare repository activity, and check the original project before adopting it.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗