更改切换按钮颤动的图标

时间:2020-06-14 15:26:09

标签: flutter button dart

是否总能在按下时更改切换按钮的图标?还是总能使图标按钮功能像切换按钮一样?

我尝试了以下方法,但是如果按钮按下agian,我想将Icon agian更改为第一个。

IconButton( iconSize: 30.0,
            padding: EdgeInsets.only(left:4,right:4,top:0),
            icon: Padding(
            child: pressed ==true ? 
            Icon(Icons.start):Icon(Icons.stop)
                  ),
                  onPressed: () {
                    setState(() {
                      pressed=true;
                    });
                  }

2 个答案:

答案 0 :(得分:1)

IconButton( iconSize: 30.0,
        padding: EdgeInsets.only(left:4,right:4,top:0),
        icon: Padding(
        child: pressed ==true ? 
        Icon(Icons.start):Icon(Icons.stop)
              ),
              onPressed: () {
                setState(() {
                  pressed = !pressed;
                });
              }

pressed = !pressed-与所说的按下等于当前不按下一样。因此在按下时,如果boolean为false,它将切换为true;如果boolean为true,则将切换为false。

答案 1 :(得分:1)

我使用上面相同的代码创建了一个小部件。

class IconToggleButton extends StatelessWidget {
  final bool isSelected;
  final Function onPressed;
  IconToggleButton({this.isSelected, this.onPressed});

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.white,
      child: IconButton(
        iconSize: 30.0,
        padding: EdgeInsets.all(5),
        icon: Padding(
            padding: EdgeInsets.zero,
            child: isSelected == true
                ? Icon(FontAwesome.sort_name_up)
                : Icon(FontAwesome.sort_name_down)),
        onPressed: () {
          onPressed();
        },
      ),
    );
  }
}

用法:

创建类变量

 bool isSelected = false;

使用小部件如下:

IconToggleButton(
                        isSelected: isSelected,
                        onPressed: () {
                          setState(
                            () {
                              isSelected = !isSelected;
                            },
                          );
                        },
                      )

希望对很多人有帮助。