import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:tetrisdual/cubit/game_cubit.dart';
import 'package:tetrisdual/models/game/player.dart';

class SubmitWidget extends StatelessWidget {
  const SubmitWidget({super.key, required this.player});

  final Player player;

  @override
  Widget build(BuildContext context) {
    const double gainFontSize = 70;

    const gainTestStyle = TextStyle(
      fontFamily: 'Blocks',
      fontSize: gainFontSize,
      fontWeight: FontWeight.bold,
    );
    const submitIcon = Icon(
      Icons.done_all,
      color: Colors.orange,
      size: gainFontSize / 2,
    );

    const topBorderBlack = BoxDecoration(
      border: Border(
        top: BorderSide(
          color: Colors.black,
          width: 2,
        ),
      ),
    );

    return Container(
      decoration: topBorderBlack,
      padding: const EdgeInsets.only(
        top: 10,
      ),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text(
            '+${player.counter.computePoints()}',
            style: gainTestStyle,
            textHeightBehavior: const TextHeightBehavior(
              applyHeightToFirstAscent: false,
              applyHeightToLastDescent: false,
            ),
          ),
          const SizedBox(width: 10),
          IconButton(
            padding: EdgeInsets.zero,
            constraints: const BoxConstraints(),
            style: const ButtonStyle(
              tapTargetSize: MaterialTapTargetSize.shrinkWrap,
            ),
            icon: submitIcon,
            onPressed: () {
              player.score = player.score + player.counter.computePoints();
              player.counter.reset();

              BlocProvider.of<GameCubit>(context).toggleCurrentPlayer();
            },
          ),
          const SizedBox(width: 10),
        ],
      ),
    );
  }
}