Skip to content
Snippets Groups Projects
Select Git revision
  • f069c6182de75f7af98720a5f8c472351758b996
  • master default protected
  • 30-upgrade-framework-and-dependencies
  • 13-improve-app-metadata
  • Release_0.8.0_23 protected
  • Release_0.7.2_22 protected
  • Release_0.7.1_21 protected
  • Release_0.7.0_20 protected
  • Release_0.6.0_19 protected
  • Release_0.5.0_18 protected
  • Release_0.4.0_17 protected
  • Release_0.3.2_16 protected
  • Release_0.3.1_15 protected
  • Release_0.3.0_14 protected
  • Release_0.2.1_13 protected
  • Release_0.2.0_12 protected
  • Release_0.1.1_11 protected
  • Release_0.1.0_10 protected
  • Release_0.0.9_9 protected
  • Release_0.0.8_8 protected
  • Release_0.0.7_7 protected
  • Release_0.0.6_6 protected
  • Release_0.0.5_5 protected
  • Release_0.0.4_4 protected
24 results

app_titles.dart

Blame
  • parameters.dart 3.33 KiB
    import 'package:flutter/material.dart';
    
    import 'package:calculus/provider/data.dart';
    import 'package:calculus/utils/game_utils.dart';
    
    class Parameters {
      static Widget buildParametersSelector(Data myProvider) {
        return Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            const SizedBox(height: 5),
            Expanded(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Parameters.buildParameterSelector(myProvider, 'level'),
                  const SizedBox(height: 5),
                  Parameters.buildParameterSelector(myProvider, 'skin'),
                  const SizedBox(height: 5),
                ],
              ),
            ),
            const SizedBox(height: 5),
            Container(
              child: Parameters.buildStartGameButton(myProvider),
            ),
          ],
        );
      }
    
      static Widget buildStartGameButton(Data myProvider) {
        Column decorationImage = const Column(children: [
          Image(
            image: AssetImage('assets/icons/game_win.png'),
            fit: BoxFit.fill,
          ),
        ]);
    
        return Container(
          margin: const EdgeInsets.all(2),
          padding: const EdgeInsets.all(2),
          child: Table(
            defaultColumnWidth: const IntrinsicColumnWidth(),
            children: [
              TableRow(
                children: [
                  decorationImage,
                  Column(children: [
                    TextButton(
                      child: const Image(
                        image: AssetImage('assets/icons/button_start.png'),
                        fit: BoxFit.fill,
                      ),
                      onPressed: () => GameUtils.startGame(myProvider),
                    ),
                  ]),
                  decorationImage,
                ],
              ),
            ],
          ),
        );
      }
    
      static Widget buildParameterSelector(Data myProvider, String parameterCode) {
        List availableValues = myProvider.getParameterAvailableValues(parameterCode);
    
        if (availableValues.length == 1) {
          return const SizedBox(height: 1);
        }
    
        return Table(
          defaultColumnWidth: const IntrinsicColumnWidth(),
          children: [
            TableRow(
              children: [
                for (var index = 0; index < availableValues.length; index++)
                  Column(children: [
                    _buildParameterButton(myProvider, parameterCode, availableValues[index])
                  ]),
              ],
            ),
          ],
        );
      }
    
      static TextButton _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 TextButton(
          child: Container(
            padding: const EdgeInsets.all(2),
            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),
        );
      }
    }