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