Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alexobviously/squares

A flexible chessboard widget for Flutter
https://github.com/alexobviously/squares

chess chessboard dart flutter

Last synced: about 12 hours ago
JSON representation

A flexible chessboard widget for Flutter

Awesome Lists containing this project

README

        


Squares

### A flexible chessboard widget for Flutter.

Squares is a chessboard like you've never seen before. Or more accurately, it is a chessboard very much like the ones you have seen before, but one that can do a pretty wide variety of things.

It is a UI package only, meaning it doesn't handle game logic. The [Bishop](https://pub.dev/packages/bishop) package is recommended for game logic, and there is also a small interoperability package, [Square Bishop](https://pub.dev/packages/square_bishop) that provides convenience methods for common type, a state for Squares to use, and extension methods on `Bishop.Game` that generate it.

There are two examples: [a simple one](https://github.com/alexobviously/squares/blob/main/example/simple/lib/main.dart) in around 100 lines, [and a more complex and featureful app](https://github.com/alexobviously/squares/tree/main/example/complex) that demonstrates the various features of Squares in a realistic architecture.

Squares has a stateless `Board` widget that can used to display a complete board representation, and can be integrated at a low level with your own UI logic. However, the more likely use case involves the `BoardController` widget, which implements all of the piece selection and movement logic you're likely to need, including premoves and piece promotion.

### Features
* Highlighting previous moves, possible moves, check/checkmate
* Board themes


* Marker themes


* Piece animations


* Premoves


* Supports arbitrary board sizes and pieces











* Piece promotion


* Flexible piece set definitions - any widget will do, use an svg, image asset, text, etc


* Dropping pieces from hands (à la Crazyhouse)