import 'package:flutter/material.dart'; import '../provider/data.dart'; import '../utils/game_utils.dart'; class Parameters { static Container buildParametersSelector(Data myProvider) { return Container( padding: EdgeInsets.all(2), margin: EdgeInsets.all(2), child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Parameters.buildParameterSelector(myProvider, 'difficulty'), SizedBox(height: 5), Parameters.buildParameterSelector(myProvider, 'size'), SizedBox(height: 5), Parameters.buildStartGameButton(myProvider), ], ), ); } static Container buildStartGameButton(Data myProvider) { Column decorationImage = Column( children: [ Image( image: AssetImage('assets/icons/game_win.png'), fit: BoxFit.fill ), ] ); return Container( margin: EdgeInsets.all(2), padding: EdgeInsets.all(2), child: Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ TableRow( children: [ decorationImage, Column( children: [ FlatButton( child: Container( child: Image( image: AssetImage('assets/icons/button_start.png'), fit: BoxFit.fill, ), ), onPressed: () => GameUtils.startGame(myProvider), ), ] ), decorationImage, ], ), ] ) ); } static Table buildParameterSelector(Data myProvider, String parameterCode) { List availableValues = myProvider.getParameterAvailableValues(parameterCode); return Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ TableRow( children: [ for (var index = 0; index < availableValues.length; index++) Column( children: [ _buildParameterButton(myProvider, parameterCode, availableValues[index]) ] ), ], ), ], ); } static FlatButton _buildParameterButton(Data myProvider, String parameterCode, String parameterValue) { String currentValue = myProvider.getParameterValue(parameterCode).toString(); bool isActive = (parameterValue == currentValue); String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue + '.png'; return FlatButton( padding: EdgeInsets.all(2), child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10), border: Border.all( color: isActive ? Colors.blue : Colors.white, width: 10, ), ), child: Image( image: AssetImage(imageAsset), fit: BoxFit.fill, ), ), onPressed: () => myProvider.setParameterValue(parameterCode, parameterValue), ); } }