Skip to content
Snippets Groups Projects
Select Git revision
  • 6c20de9daadd982d1bcdbda6a734f9cf46643b72
  • master default protected
  • 49-upgrade-framework-and-dependencies
  • 32-improve-app-metadata
  • Release_0.9.0_43 protected
  • Release_0.8.2_42 protected
  • Release_0.8.1_41 protected
  • Release_0.8.0_40 protected
  • Release_0.7.0_39 protected
  • Release_0.6.0_38 protected
  • Release_0.5.0_37 protected
  • Release_0.4.2_36 protected
  • Release_0.4.1_35 protected
  • Release_0.4.0_34 protected
  • Release_0.3.1_33 protected
  • Release_0.3.0_32 protected
  • Release_0.2.1_31 protected
  • Release_0.2.0_30 protected
  • Release_0.1.2_29 protected
  • Release_0.1.1_28 protected
  • Release_0.1.0_27 protected
  • Release_0.0.26_26 protected
  • Release_0.0.25_25 protected
  • Release_0.0.24_24 protected
24 results

nav_cubit.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),
                  ],
                );
              },
            );
          },
        );
      }
    }