Select Git revision
game_countdown.dart
-
Benoît Harrault authoredBenoît Harrault authored
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),
],
);
},
);
},
);
}
}