player_panel.dart 2.0 KB

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