Skip to content
Snippets Groups Projects
Select Git revision
  • cc298e0b75868f91c9fde9c9e2de0265ec1f78c2
  • master default protected
  • 61-upgrade-framework-and-dependencies
  • 42-add-allowed-categories-in-settings-page
  • 44-improve-app-metadata
  • 23-add-tip-response-on-clic-on-button
  • Release_1.11.0_55 protected
  • Release_1.10.2_54 protected
  • Release_1.10.1_53 protected
  • Release_1.10.0_52 protected
  • Release_1.9.0_51 protected
  • Release_1.8.0_50 protected
  • Release_1.7.0_49 protected
  • Release_1.6.2_48 protected
  • Release_1.6.1_47 protected
  • Release_1.6.0_46 protected
  • Release_1.5.1_45 protected
  • Release_1.5.0_44 protected
  • Release_1.4.1_43 protected
  • Release_1.4.0_42 protected
  • Release_1.3.1_41 protected
  • Release_1.3.0_40 protected
  • Release_1.2.33_39 protected
  • Release_1.2.32_38 protected
  • Release_1.2.31_37 protected
  • Release_1.2.30_36 protected
26 results

game_countdown.dart

Blame
  • game_countdown.dart 2.96 KiB
    import 'package:flutter/material.dart';
    import 'package:flutter_bloc/flutter_bloc.dart';
    
    import 'package:petitbac/cubit/game_cubit.dart';
    import 'package:petitbac/cubit/settings_game_cubit.dart';
    import 'package:petitbac/models/game.dart';
    import 'package:petitbac/utils/color_extensions.dart';
    
    class GameButtonNextWithCountdown extends StatelessWidget {
      const GameButtonNextWithCountdown({super.key});
    
      @override
      Widget build(BuildContext context) {
        return BlocBuilder<GameCubit, GameState>(
          builder: (BuildContext context, GameState gameState) {
            final Game currentGame = gameState.currentGame;
    
            const Color backgroundColor = Colors.blue;
            const double borderWidth = 8.0;
            final Color borderColor = backgroundColor.darken();
    
            const Color textColor = Colors.black;
    
            return BlocBuilder<GameSettingsCubit, GameSettingsState>(
              builder: (context, settingsSate) {
                return Column(
                  mainAxisSize: MainAxisSize.min,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    const SizedBox(height: 5),
                    Container(
                      margin: const EdgeInsets.all(borderWidth),
                      padding: const EdgeInsets.all(borderWidth),
                      decoration: BoxDecoration(
                        color: backgroundColor,
                        borderRadius: BorderRadius.circular(borderWidth),
                        border: Border.all(
                          color: borderColor,
                          width: borderWidth,
                        ),
                      ),
                      child: TextButton(
                        onPressed: () {
                          final GameCubit gameCubit = BlocProvider.of<GameCubit>(context);
    
                          if (currentGame.isFinished) {
                            gameCubit.quitGame();
                          } else {
                            if (currentGame.gameSettings.itemsCount == 0) {
                              gameCubit.pickNewItem();
                              gameCubit.startTimer();
                            } else {
                              if (currentGame.countdown == 0) {
                                gameCubit.next();
                              }
                            }
                          }
                        },
                        child: Text(
                          currentGame.isFinished
                              ? '🎆'
                              : ((currentGame.countdown == 0)
                                  ? '🎲'
                                  : currentGame.countdown.toString()),
                          textAlign: TextAlign.center,
                          style: const TextStyle(
                            fontSize: 50,
                            fontWeight: FontWeight.w600,
                            color: textColor,
                          ),
                        ),
                      ),
                    ),
                    const SizedBox(height: 5),
                  ],
                );
              },
            );
          },
        );
      }
    }