import 'package:flutter/material.dart'; import 'package:calculus/provider/data.dart'; import 'package:calculus/utils/game_utils.dart'; class Game { static Widget buildGameWidget(Data myProvider) { final bool gameIsFinished = myProvider.isGameFinished(); return Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox(height: 8), Game.buildTopIndicatorWidget(myProvider), const SizedBox(height: 2), const Expanded( child: Text('GAME'), ), const SizedBox(height: 2), SizedBox( height: 150, width: double.maxFinite, child: gameIsFinished ? Game.buildEndGameMessage(myProvider) : const Text('CONTROLS'), ), ], ); } static Widget buildTopIndicatorWidget(Data myProvider) { return Table( children: const [ TableRow( children: [ Column(children: [ Text( 'SCORE', style: TextStyle( fontSize: 40, fontWeight: FontWeight.w600, color: Colors.black, ), ), Text( 'TARGET', style: TextStyle( fontSize: 15, fontWeight: FontWeight.w600, color: Colors.grey, ), ), ]), Column(children: [ Text( 'INFOS', style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600, color: Colors.green, ), ), ]), ], ), ], ); } static TextButton buildRestartGameButton(Data myProvider) { return TextButton( child: const Image( image: AssetImage('assets/icons/button_back.png'), fit: BoxFit.fill, ), onPressed: () => GameUtils.resetGame(myProvider), ); } static Widget buildEndGameMessage(Data myProvider) { String decorationImageAssetName = ''; if (myProvider.gameWon) { decorationImageAssetName = 'assets/icons/game_win.png'; } else { decorationImageAssetName = 'assets/icons/game_fail.png'; } Image decorationImage = Image(image: AssetImage(decorationImageAssetName), fit: BoxFit.fill); return Container( margin: const EdgeInsets.all(2), padding: const EdgeInsets.all(2), child: Table(defaultColumnWidth: const IntrinsicColumnWidth(), children: [ TableRow( children: [ Column(children: [decorationImage]), Column(children: [buildRestartGameButton(myProvider)]), Column(children: [decorationImage]), ], ), ])); } }