player_panel.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'package:flutter/material.dart';
  2. import 'package:tetris/material/briks.dart';
  3. import 'package:tetris/material/images.dart';
  4. import 'package:tetris/gamer/gamer.dart';
  5. const playerPanelPadding = 6;
  6. Size getBrikSizeForScreenWidth(double width) {
  7. return Size.square((width - playerPanelPadding) / gamePadMatrixW);
  8. }
  9. ///the matrix of player content
  10. class PlayerPanel extends StatelessWidget {
  11. //the size of player panel
  12. final Size size;
  13. PlayerPanel({
  14. Key? key,
  15. required double width,
  16. }) : assert(width != 0),
  17. size = Size(width, width * 2),
  18. super(key: key);
  19. @override
  20. Widget build(BuildContext context) {
  21. debugPrint("size : $size");
  22. return SizedBox.fromSize(
  23. size: size,
  24. child: Container(
  25. padding: const EdgeInsets.all(2),
  26. decoration: BoxDecoration(
  27. border: Border.all(color: Colors.black),
  28. ),
  29. child: Stack(
  30. children: <Widget>[
  31. _PlayerPad(),
  32. _GameUninitialized(),
  33. ],
  34. ),
  35. ),
  36. );
  37. }
  38. }
  39. class _PlayerPad extends StatelessWidget {
  40. @override
  41. Widget build(BuildContext context) {
  42. return Column(
  43. children: GameState.of(context).data.map((list) {
  44. return Row(
  45. children: list.map((b) {
  46. return b == 1
  47. ? const Brik.normal()
  48. : b == 2
  49. ? const Brik.highlight()
  50. : const Brik.empty();
  51. }).toList(),
  52. );
  53. }).toList(),
  54. );
  55. }
  56. }
  57. class _GameUninitialized extends StatelessWidget {
  58. @override
  59. Widget build(BuildContext context) {
  60. if (GameState.of(context).states == GameStates.none) {
  61. return const Center(
  62. child: Column(
  63. mainAxisSize: MainAxisSize.min,
  64. children: <Widget>[
  65. IconDragon(animate: true),
  66. SizedBox(height: 16),
  67. Text(
  68. "tetrix",
  69. style: TextStyle(fontSize: 20),
  70. ),
  71. ],
  72. ),
  73. );
  74. } else {
  75. return Container();
  76. }
  77. }
  78. }