m_icon_button.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:flutter/material.dart';
  2. class MIconButton extends StatelessWidget {
  3. const MIconButton({
  4. super.key,
  5. this.icon,
  6. this.onPressed,
  7. this.isSelected = false,
  8. this.selectedSrc,
  9. this.src,
  10. });
  11. final bool isSelected;
  12. final Widget? icon;
  13. final VoidCallback? onPressed;
  14. final String? src;
  15. final String? selectedSrc;
  16. @override
  17. Widget build(BuildContext context) {
  18. const s = 46.0;
  19. Widget wIcon = src != null
  20. ? Image.asset(
  21. src!,
  22. width: s,
  23. height: s,
  24. ) : icon!;
  25. final children = <Widget>[
  26. SizedBox(
  27. width: s,
  28. height: s,
  29. child: wIcon)
  30. ];
  31. if(onPressed==null){
  32. children.add(Container(
  33. height: 36,
  34. width: 36,
  35. margin: const EdgeInsets.all(5),
  36. decoration: BoxDecoration(
  37. color: Colors.white.withAlpha(180),
  38. borderRadius: BorderRadius.circular(5)),
  39. ));
  40. }
  41. if (isSelected && onPressed != null) {
  42. children.add(Image.asset(
  43. selectedSrc ?? 'assets/images/btn_boader.png',
  44. width: s,
  45. height: s,
  46. ));
  47. }
  48. return GestureDetector(
  49. onTap: onPressed,
  50. child: Stack(
  51. children: children,
  52. ),
  53. );
  54. }
  55. }