import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:twister/config/colors.dart'; import 'package:twister/models/move.dart'; import 'package:twister/models/twister_color.dart'; import 'package:twister/models/twister_member.dart'; import 'package:twister/utils/color_extensions.dart'; class ShowMove extends StatelessWidget { const ShowMove({super.key, required this.move}); final Move move; Color getColor(Move move) { switch (move.color?.value) { case TwisterAllowedColors.blue: return TwisterColors.blue; case TwisterAllowedColors.green: return TwisterColors.green; case TwisterAllowedColors.red: return TwisterColors.red; case TwisterAllowedColors.yellow: return TwisterColors.yellow; default: return TwisterColors.grey; } } Widget getImageWidget(Move move) { String imageAsset = 'assets/images/${move.member?.toString() ?? 'blank'}.png'; return Image.asset(imageAsset); } Widget getTextWidget(Move move) { TextStyle style = const TextStyle( color: Colors.black, fontSize: 30, fontWeight: FontWeight.bold, ); switch (move.member?.value) { case TwisterAllowedMembers.leftHand: return Text(tr('left_hand'), style: style); case TwisterAllowedMembers.rightHand: return Text(tr('right_hand'), style: style); case TwisterAllowedMembers.leftFoot: return Text(tr('left_foot'), style: style); case TwisterAllowedMembers.rightFoot: return Text(tr('right_foot'), style: style); default: return Text('?', style: style); } } Widget buildWidget(Move move, double maxWidth) { Color color = getColor(move); double containerSize = maxWidth * 0.8; return AnimatedSwitcher( duration: const Duration(milliseconds: 200), transitionBuilder: (Widget child, Animation<double> animation) { return ScaleTransition(scale: animation, child: child); }, child: Container( width: containerSize, height: containerSize, decoration: BoxDecoration( color: color, borderRadius: BorderRadius.all(Radius.circular(containerSize)), border: Border.all( color: color.darken(15), width: 15, ), ), child: getImageWidget(move), ), ); } @override Widget build(BuildContext context) { return LayoutBuilder( builder: (context, constraints) { final double maxWidth = constraints.maxWidth; return buildWidget(move, maxWidth); }, ); } }