import 'dart:async'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:mchess/chessapp/chess_utils.dart'; import 'package:mchess/chessapp/chess_square.dart'; class ChessBloc extends Bloc { static final ChessBloc _instance = ChessBloc._internal(); ChessBloc._internal() : super(ChessBoardState.init()) { on(moveHandler); } factory ChessBloc.getInstance() { return ChessBloc(); } factory ChessBloc() { return _instance; } FutureOr moveHandler( PieceMoved event, Emitter emit, ) { emit(ChessBoardState( !state.flipped, ChessColor.black, state.position, )); } } abstract class ChessEvent {} class PieceMoved extends ChessEvent {} class BoardFlippedEvent extends ChessEvent {} class ChessBoardState { final bool flipped; final ChessColor turnColor; final Map position; ChessBoardState(this.flipped, this.turnColor, this.position); ChessBoardState.init() : flipped = false, turnColor = ChessColor.white, position = {}; }