import 'package:flutter/material.dart'; class ToggleButton extends StatefulWidget { final IconData activeIcon; final IconData unActiveIcon; final Color activeColor; final Color unActiveColor; final bool active; final double size; final void Function(bool status) onChange; ToggleButton( {this.activeIcon, this.unActiveIcon, this.activeColor, this.unActiveColor, this.onChange, this.size = 25, this.active = false}); @override _ToggleButtonState createState() => _ToggleButtonState(); } class _ToggleButtonState extends State { bool isActive; @override void initState() { super.initState(); isActive = widget.active; } @override Widget build(BuildContext context) { return GestureDetector( child: Container( child: Stack( children: [ //左边选择,右边未选择 Icon(widget.unActiveIcon, size: widget.size, color: isActive ? widget.unActiveColor : widget.activeColor), Icon(widget.activeIcon, size: widget.size, color: isActive ? widget.activeColor : widget.unActiveColor), ], ), ), onTap: () { setState(() { isActive = !isActive; widget.onChange(isActive); }); }, ); } }