import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:minehunter/config/application_config.dart'; import 'package:minehunter/cubit/activity/activity_cubit.dart'; import 'package:minehunter/models/activity/activity.dart'; class TopIndicator extends StatelessWidget { const TopIndicator({super.key}); @override Widget build(BuildContext context) { return BlocBuilder<ActivityCubit, ActivityState>( builder: (BuildContext context, ActivityState activityState) { final Activity currentActivity = activityState.currentActivity; final String skin = currentActivity.activitySettings.get(ApplicationConfig.parameterCodeSkin); final int flaggedCellsCount = currentActivity.countFlaggedCells(); final int minesCount = currentActivity.minesCount; const double blockSize = 30; final blockWidth = MediaQuery.of(context).size.width / 4; final Image flagIconBlock = Image( image: AssetImage('assets/skins/${skin}_tile_flag.png'), fit: BoxFit.fill, height: blockSize, width: blockSize, ); final Image mineIconBlock = Image( image: AssetImage('assets/skins/${skin}_tile_mine.png'), fit: BoxFit.fill, height: blockSize, width: blockSize, ); final Text markedMinesCountBlock = Text( flaggedCellsCount.toString(), style: TextStyle( fontSize: blockSize, fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.primary, ), ); final Text placedMinesCountBlock = Text( minesCount.toString(), style: TextStyle( fontSize: blockSize, fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.primary, ), ); final Widget flagsWidget = StyledContainer( borderWidth: 8, child: SizedBox( width: blockWidth, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ markedMinesCountBlock, flagIconBlock, ], ), ), ); final Widget minesWidget = StyledContainer( borderWidth: 8, child: SizedBox( width: blockWidth, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ mineIconBlock, placedMinesCountBlock, ], ), ), ); return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ flagsWidget, const SizedBox(width: blockSize * 2), minesWidget, ], ) ], ); }, ); } }