Hibok
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

60 行
1.4 KiB

  1. import 'package:flutter/material.dart';
  2. class ToggleButton extends StatefulWidget {
  3. final IconData activeIcon;
  4. final IconData unActiveIcon;
  5. final Color activeColor;
  6. final Color unActiveColor;
  7. final bool active;
  8. final double size;
  9. final void Function(bool status) onChange;
  10. ToggleButton(
  11. {this.activeIcon,
  12. this.unActiveIcon,
  13. this.activeColor,
  14. this.unActiveColor,
  15. this.onChange,
  16. this.size = 25,
  17. this.active = false});
  18. @override
  19. _ToggleButtonState createState() => _ToggleButtonState();
  20. }
  21. class _ToggleButtonState extends State<ToggleButton> {
  22. bool isActive;
  23. @override
  24. void initState() {
  25. super.initState();
  26. isActive = widget.active;
  27. }
  28. @override
  29. Widget build(BuildContext context) {
  30. return GestureDetector(
  31. child: Container(
  32. child: Stack(
  33. children: <Widget>[
  34. //左边选择,右边未选择
  35. Icon(widget.unActiveIcon,
  36. size: widget.size,
  37. color: isActive ? widget.unActiveColor : widget.activeColor),
  38. Icon(widget.activeIcon,
  39. size: widget.size,
  40. color: isActive ? widget.activeColor : widget.unActiveColor),
  41. ],
  42. ),
  43. ),
  44. onTap: () {
  45. setState(() {
  46. isActive = !isActive;
  47. widget.onChange(isActive);
  48. });
  49. },
  50. );
  51. }
  52. }