Select Git revision
game_pick_word.dart
game_tile.dart 1.89 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:memory/cubit/game_cubit.dart';
import 'package:memory/models/game/game.dart';
import 'package:memory/models/game/tile.dart';
class GameTileWidget extends StatelessWidget {
const GameTileWidget({
super.key,
required this.tileIndex,
});
final int tileIndex;
@override
Widget build(BuildContext context) {
return BlocBuilder<GameCubit, GameState>(
builder: (BuildContext context, GameState gameState) {
final Game currentGame = gameState.currentGame;
final Tile tile = currentGame.board.tiles[tileIndex];
final String assetName =
'assets/skins/${currentGame.globalSettings.skin}_${tile.paired ? 'found' : (tile.selected ? tile.value.toString() : 'unknown')}.png';
return Padding(
padding: const EdgeInsets.all(2),
child: AspectRatio(
aspectRatio: 1,
child: ElevatedButton(
style: const ButtonStyle(
padding: WidgetStatePropertyAll(EdgeInsets.all(2)),
),
onPressed: () {
if (!currentGame.animationInProgress) {
BlocProvider.of<GameCubit>(context).tapOnTile(tileIndex);
}
},
child: AnimatedSwitcher(
duration: const Duration(milliseconds: 100),
transitionBuilder: (Widget child, Animation<double> animation) {
return ScaleTransition(
scale: animation,
child: child,
);
},
child: Image(
image: AssetImage(assetName),
fit: BoxFit.fill,
key: ValueKey<int>(assetName.hashCode),
),
),
),
),
);
},
);
}
}