You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
5.7 KiB

2 years ago
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. class TopBar extends ConsumerWidget {
  4. const TopBar({
  5. required Color color,
  6. required int puzzleSize,
  7. this.padding = const EdgeInsets.fromLTRB(24.0, 16.0, 24.0, 16.0),
  8. this.tileGap = 16,
  9. this.isCentered = false,
  10. Key? key,
  11. }) : _color = color,
  12. _puzzleSize = puzzleSize,
  13. super(key: key);
  14. final Color _color;
  15. final int _puzzleSize;
  16. final EdgeInsets padding;
  17. final double tileGap;
  18. final bool isCentered;
  19. @override
  20. Widget build(BuildContext context, WidgetRef ref) {
  21. return Container(
  22. color: _color,
  23. child: Padding(
  24. padding: padding,
  25. child: Row(
  26. mainAxisAlignment: MainAxisAlignment.center,
  27. children: [
  28. isCentered ? const SizedBox() : const Spacer(),
  29. // TextButton(
  30. // style: _puzzleType == 'Normal'
  31. // ? ButtonStyle(
  32. // foregroundColor: MaterialStateProperty.resolveWith<Color>(
  33. // (Set<MaterialState> states) {
  34. // return Palette.blue;
  35. // },
  36. // ),
  37. // )
  38. // : null,
  39. // onPressed: _puzzleType == 'Normal'
  40. // ? null
  41. // : () {
  42. // ref.read(puzzleTypeNotifierProvider.notifier).changeToNormal();
  43. // },
  44. // child: Padding(
  45. // padding: const EdgeInsets.all(8.0),
  46. // child: Row(
  47. // children: [
  48. // Opacity(
  49. // opacity: _puzzleType == 'Normal' ? 1 : 0.5,
  50. // child: const FaIcon(FontAwesomeIcons.rocket),
  51. // ),
  52. // const SizedBox(width: 8),
  53. // Text(
  54. // 'Normal',
  55. // style: TextStyle(
  56. // fontSize: 16,
  57. // color: Colors.white.withOpacity(_puzzleType == 'Normal' ? 1 : 0.5),
  58. // ),
  59. // ),
  60. // ],
  61. // ),
  62. // ),
  63. // ),
  64. // SizedBox(width: tileGap),
  65. // TextButton(
  66. // style: _puzzleType == 'Photo'
  67. // ? ButtonStyle(
  68. // foregroundColor: MaterialStateProperty.resolveWith<Color>(
  69. // (Set<MaterialState> states) {
  70. // return Theme.of(context).colorScheme.primary;
  71. // },
  72. // ),
  73. // )
  74. // : null,
  75. // onPressed: _puzzleType == 'Photo'
  76. // ? null
  77. // : () {
  78. // final state = ref.read(imageSplitterNotifierProvider);
  79. // if (state is! ImageSplitterComplete) {
  80. // ref.read(imageSplitterNotifierProvider.notifier).getInitialImages(puzzleSize: _puzzleSize);
  81. // }
  82. //
  83. // ref.read(puzzleTypeNotifierProvider.notifier).changeToPhoto();
  84. // },
  85. // child: Padding(
  86. // padding: const EdgeInsets.all(8.0),
  87. // child: Row(
  88. // children: [
  89. // Opacity(
  90. // opacity: _puzzleType == 'Photo' ? 1 : 0.5,
  91. // child: const FaIcon(FontAwesomeIcons.image),
  92. // ),
  93. // const SizedBox(width: 8),
  94. // Text(
  95. // 'Photo',
  96. // style: TextStyle(
  97. // fontSize: 16,
  98. // color: Colors.white.withOpacity(_puzzleType == 'Photo' ? 1 : 0.5),
  99. // ),
  100. // ),
  101. // ],
  102. // ),
  103. // ),
  104. // ),
  105. // SizedBox(width: tileGap),
  106. // TextButton(
  107. // style: _puzzleType == 'Multiplayer'
  108. // ? ButtonStyle(
  109. // foregroundColor: MaterialStateProperty.resolveWith<Color>(
  110. // (Set<MaterialState> states) {
  111. // return Palette.blue;
  112. // },
  113. // ),
  114. // )
  115. // : null,
  116. // onPressed: _puzzleType == 'Multiplayer'
  117. // ? null
  118. // : () {
  119. // // ref.read(puzzleTypeNotifierProvider.notifier).dispose();
  120. //
  121. // ref.read(puzzleTypeNotifierProvider.notifier).changeToMultiplayer();
  122. // ref.read(emailAuthNotificationProvider.notifier).checkForSignedUser();
  123. // },
  124. // child: Padding(
  125. // padding: const EdgeInsets.all(8.0),
  126. // child: Row(
  127. // children: [
  128. // Opacity(
  129. // opacity: _puzzleType == 'Multiplayer' ? 1 : 0.5,
  130. // child: const FaIcon(FontAwesomeIcons.gamepad),
  131. // ),
  132. // const SizedBox(width: 8),
  133. // Text(
  134. // 'Multiplayer',
  135. // style: TextStyle(
  136. // fontSize: 16,
  137. // color: Colors.white.withOpacity(_puzzleType == 'Multiplayer' ? 1 : 0.5),
  138. // ),
  139. // ),
  140. // ],
  141. // ),
  142. // ),
  143. // ),
  144. ],
  145. ),
  146. ),
  147. );
  148. }
  149. }