button.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import 'package:flutter/material.dart';
  2. import 'package:link/utils/global.dart';
  3. import '../../utils/size_fit.dart';
  4. class Button extends StatefulWidget {
  5. Widget child;
  6. var callback;
  7. Button({Key? key, required this.child, required this.callback})
  8. : super(key: key);
  9. @override
  10. State<Button> createState() => _ButtonState();
  11. }
  12. class _ButtonState extends State<Button> {
  13. double scale = 1.0;
  14. double alpha = 1.0;
  15. bool isTrue = false;
  16. @override
  17. void initState() {
  18. if (Global().eventBus != null) {
  19. Global().eventBus!.on().listen((event) {
  20. if (scale != 1.0) {
  21. setState(() {
  22. scale = 1.0;
  23. alpha = 1.0;
  24. });
  25. }
  26. });
  27. }
  28. super.initState();
  29. }
  30. @override
  31. Widget build(BuildContext context) {
  32. SizeFit.initialize(context);
  33. return GestureDetector(
  34. onTap: () {
  35. widget.callback();
  36. },
  37. onTapDown: (TapDownDetails details) {
  38. setState(() {
  39. scale = 0.95;
  40. alpha = 0.8;
  41. });
  42. },
  43. onTapUp: (TapUpDetails details) {
  44. setState(() {
  45. scale = 1.0;
  46. alpha = 1.0;
  47. });
  48. },
  49. // onVerticalDragEnd: (details){
  50. // setState(() {
  51. // scale = 1.0;
  52. // alpha = 1.0;
  53. // });
  54. // },
  55. // onLongPressUp: () {
  56. // setState(() {
  57. // scale = 1.0;
  58. // alpha = 1.0;
  59. // });
  60. // },
  61. // onLongPressCancel: (() {
  62. // setState(() {
  63. // scale = 1.0;
  64. // alpha = 1.0;
  65. // });
  66. // }),
  67. // onLongPressMoveUpdate: (details){
  68. // },
  69. onTapCancel: () {
  70. setState(() {
  71. scale = 1.0;
  72. alpha = 1.0;
  73. });
  74. },
  75. child: Transform.scale(
  76. scale: scale, child: Opacity(opacity: alpha, child: widget.child)));
  77. }
  78. }