Flutter 切换按钮颤振的更改图标

Flutter 切换按钮颤振的更改图标,flutter,button,dart,Flutter,Button,Dart,是否有任何方式可以更改按下的切换按钮的图标,或者是否有任何方式可以使图标按钮的功能类似于切换按钮 我尝试了以下方法,但如果按下agian按钮,我想将图标agian更改为第一个图标 IconButton( iconSize: 30.0, padding: EdgeInsets.only(left:4,right:4,top:0), icon: Padding( child: pressed ==true ?

是否有任何方式可以更改按下的切换按钮的图标,或者是否有任何方式可以使图标按钮的功能类似于切换按钮

我尝试了以下方法,但如果按下agian按钮,我想将图标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;
                    });
                  }
按下=!按下
-表示按下等于当前未按下。所以按下按钮,如果布尔值为false,它将切换为true;如果布尔值为true,它将切换为false


按下=!按下
-表示按下等于当前未按下。所以按下按钮,如果布尔值为false,它将切换为true;如果布尔值为true,它将切换为false

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

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;
                            },
                          );
                        },
                      )

希望它能帮助很多人。

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

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;
                            },
                          );
                        },
                      )

希望它能帮助很多人。

对我不起作用,它说
断言失败:布尔表达式不能为null
您需要先在类中创建一个名为pressed的布尔表达式,并将其指定为true或false。所以它不是空的。对我不起作用,它说
失败的断言:布尔表达式不能为空
您需要首先在类中创建一个名为pressed的布尔值,并将其指定为true或false。所以它不是空的。