import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; import 'package:mchess/chess_bloc/chess_bloc.dart'; import 'package:mchess/chess/chess_board.dart'; import 'package:mchess/chess/turn_indicator_widget.dart'; import 'package:mchess/connection_cubit/connection_cubit.dart'; import 'package:mchess/connection/ws_connection.dart'; import 'package:mchess/utils/widgets/server_log_widget.dart'; import 'package:uuid/uuid.dart'; class ChessGame extends StatefulWidget { final UuidValue playerID; final UuidValue lobbyID; const ChessGame({required this.playerID, required this.lobbyID, super.key}); @override State createState() => _ChessGameState(); } class _ChessGameState extends State { @override void initState() { super.initState(); ConnectionCubit.getInstance() .connect(widget.playerID.uuid, widget.lobbyID.uuid); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: FittedBox( fit: BoxFit.contain, child: Row( children: [ if (kDebugMode) StreamBuilder( stream: ServerConnection.getInstance().broadcast, builder: (context, snapshot) { return ServerLogWidget( snapshot.data ?? "", textColor: Colors.white, ); }, ), Container( margin: const EdgeInsets.all(20), child: BlocBuilder( builder: (context, state) { return ChessBoard( bState: state, ); }, ), ), if (kDebugMode) const TurnIndicator(), ], ), ), ), floatingActionButton: FloatingActionButton( onPressed: () { context.goNamed('lobbySelector'); }, child: const Icon(Icons.arrow_back), ), ); } }