Select Git revision
app_titles.dart
-
Benoît Harrault authoredBenoît Harrault authored
parameters.dart 4.52 KiB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:jeweled/config/default_game_settings.dart';
import 'package:jeweled/cubit/game_cubit.dart';
import 'package:jeweled/cubit/settings_cubit.dart';
import 'package:jeweled/models/game_settings.dart';
class Parameters extends StatelessWidget {
const Parameters({super.key});
static const double separatorHeight = 2.0;
static const double blockMargin = 3.0;
static const double blockPadding = 2.0;
static const Color buttonBackgroundColor = Colors.white;
static const Color buttonBorderColorActive = Colors.blue;
static const Color buttonBorderColorInactive = Colors.white;
static const double buttonBorderWidth = 10.0;
static const double buttonBorderRadius = 8.0;
static const double buttonPadding = 0.0;
static const double buttonMargin = 0.0;
@override
Widget build(BuildContext context) {
return BlocBuilder<SettingsCubit, SettingsState>(
builder: (BuildContext context, SettingsState settingsState) {
final GameCubit gameCubit = BlocProvider.of<GameCubit>(context);
final SettingsCubit settingsCubit = BlocProvider.of<SettingsCubit>(context);
final List<Widget> lines = [];
DefaultGameSettings.availableParameters.forEach((code) {
final List<dynamic> availableValues = DefaultGameSettings.getAvailableValues(code);
if (availableValues.length > 1) {
final List<Widget> parameterButtons = [];
final dynamic currentValue = settingsCubit.getParameterValue(code);
availableValues.forEach((value) {
final bool isActive = (value == currentValue);
final String imageAsset = code + '_' + value.toString();
final Widget parameterButton = TextButton(
child: Container(
margin: EdgeInsets.all(buttonMargin),
padding: EdgeInsets.all(buttonPadding),
decoration: BoxDecoration(
color: buttonBackgroundColor,
borderRadius: BorderRadius.circular(buttonBorderRadius),
border: Border.all(
color: isActive ? buttonBorderColorActive : buttonBorderColorInactive,
width: buttonBorderWidth,
),
),
child: buildImageWidget(imageAsset),
),
onPressed: () => settingsCubit.setParameterValue(code, value),
);
parameterButtons.add(parameterButton);
});
lines.add(Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: parameterButtons,
),
],