按下后如何更改IconButton的颜色

时间:2019-03-10 19:02:22

标签: dart flutter

我想在按下后更改图标的颜色。我该怎么做? 我的IconButton领先于ListTile

leading: new IconButton(
  icon: Icon(Icons.star, color: Colors.white),
  onPressed: () {
    setState(() {
      //color: Colors.yellow; //How?

    });
  },
),

2 个答案:

答案 0 :(得分:1)

您可以这样做

class SomeState extends State<StatefulWidget> {
  Color _iconColor = Colors.white;

  @override
  Widget build(BuildContext) {
    return ListTile(
      leading: new IconButton(
        icon: Icon(Icons.star, color: _iconColor),
        onPressed: () {
          setState(() {
          _iconColor = Colors.yellow;
        });
      },
    );
  }
}

答案 1 :(得分:0)

上面的答案是正确的,但是我想补充一下,如果用户再次单击,颜色将保持不变,因此您可能想在第二次点击时将颜色更改为原始颜色,尽管值得一提

class SomeState extends State<StatefulWidget> {
  Color _favIconColor = Colors.grey;
  @override
  Widget build(BuildContext) {
    return ListTile(
      child: IconButton(
                      icon: Icon(Icons.favorite),
                      color: _favIconColor,
                      tooltip: 'Add to favorite',
                      onPressed: () {
                        setState(() {
                          if(_favIconColor == Colors.grey){
                            _favIconColor = Colors.red;
                          }else{
                        _favIconColor = Colors.grey;
                    }
               });
            },
          ),
       );
     }
    }