mchess-client/lib/chessapp/chess_app.dart

77 lines
2.5 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mchess/chess_bloc/chess_bloc.dart';
import 'package:mchess/chessapp/chess_board.dart';
2022-12-18 00:04:08 +00:00
import 'package:mchess/chessapp/turn_indicator_widget.dart';
import 'package:mchess/connection_cubit/connection_cubit.dart';
2022-12-18 00:04:08 +00:00
import '../connection/ws_connection.dart';
import '../utils/widgets/server_log_widget.dart';
class ChessApp extends StatelessWidget {
const ChessApp({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => ConnectionCubit.getInstance(),
2022-12-18 00:04:08 +00:00
child: BlocProvider(
create: (_) => ChessBloc.getInstance(),
child: MaterialApp(
title: 'mChess',
home: Scaffold(
body: Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Color.fromARGB(255, 20, 20, 20),
Color.fromARGB(255, 30, 30, 30),
Color.fromARGB(255, 40, 40, 40),
],
),
),
2022-12-18 00:04:08 +00:00
child: Center(
child: FittedBox(
fit: BoxFit.contain,
2022-12-18 00:04:08 +00:00
child: Row(
children: [
2022-12-18 00:04:08 +00:00
StreamBuilder(
stream: ServerConnection.getInstance().broadcast,
builder: (context, snapshot) {
return ServerLogWidget(
snapshot.data ?? "<snapshot empty>",
textColor: Colors.white,
);
},
),
Container(
margin: const EdgeInsets.all(20),
2022-12-18 00:04:08 +00:00
child: BlocBuilder<ChessBloc, ChessBoardState>(
builder: (context, state) {
return ChessBoard(
bState: state,
);
},
2022-11-19 10:37:15 +00:00
),
),
2022-12-18 00:04:08 +00:00
const TurnIndicator(),
],
),
2022-12-18 00:04:08 +00:00
)),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
ConnectionCubit.getInstance().reconnect();
},
child: const Icon(Icons.network_wifi),
2022-11-19 10:37:15 +00:00
),
),
2022-11-19 12:24:38 +00:00
),
),
);
}
}