import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball/l10n/l10n.dart'; import 'package:pinball_ui/pinball_ui.dart'; /// {@template round_count_display} /// Colored square indicating if a round is available. /// {@endtemplate} class RoundCountDisplay extends StatelessWidget { /// {@macro round_count_display} const RoundCountDisplay({Key? key}) : super(key: key); @override Widget build(BuildContext context) { final l10n = context.l10n; final rounds = context.select((GameBloc bloc) => bloc.state.rounds); return Row( children: [ Text( l10n.rounds, style: Theme.of(context).textTheme.subtitle1, ), const SizedBox(width: 8), Row( children: [ RoundIndicator(isActive: rounds >= 1), RoundIndicator(isActive: rounds >= 2), RoundIndicator(isActive: rounds >= 3), ], ), ], ); } } /// {@template round_indicator} /// [Widget] that displays the round indicator. /// {@endtemplate} @visibleForTesting class RoundIndicator extends StatelessWidget { /// {@macro round_indicator} const RoundIndicator({ Key? key, required this.isActive, }) : super(key: key); /// A value that describes whether the indicator is active. final bool isActive; @override Widget build(BuildContext context) { final color = isActive ? PinballColors.yellow : PinballColors.yellow.withAlpha(128); const size = 8.0; return Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: Container( color: color, height: size, width: size, ), ); } }