整个图标按钮变为灰色:颤动

Posted

技术标签:

【中文标题】整个图标按钮变为灰色:颤动【英文标题】:Whole Icon button becomes grey : flutter 【发布时间】:2021-09-09 19:42:00 【问题描述】:

我正在尝试在底部导航栏中的 play_icon 上应用颜色。问题是整个图标变成灰色。我想要实现的是:

我目前拥有的是这样的:

这是代码:

Material(
                    color:
                        light_mode ? Color(0xFFFFFFFF) : Color(0xFF616161),
                    child: Container(
                        alignment: Alignment.center,
                        height: 60,
                        width: MediaQuery.of(context).size.width,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.stretch,
                          children: [
                            Padding(
                                padding: EdgeInsets.all(1.0),
                                child: IconButton(
                                    icon: Icon(Icons.skip_previous),
                                    onPressed: () ,
                                    color: Colors.grey)),
                            Padding(
                                padding: EdgeInsets.only(right: 10),
                                child: IconButton(
                                    icon: Icon(
                                        Icons.play_circle_fill_outlined,
                                        size: 45),
                                    onPressed: () ,
                                    color: light_mode
                                        ? Color(0xFFEA80FC)
                                        : Color(0xFF6D6D6D))),
                            Padding(
                                padding: EdgeInsets.all(1.0),
                                child: IconButton(
                                    icon: Icon(Icons.skip_next),
                                    onPressed: () ,
                                    color: Colors.grey)),
                            Padding(
                                padding: EdgeInsets.all(1.0),
                                child: IconButton(
                                    icon: Icon(
                                        Icons.bookmark_border_outlined),
                                    onPressed: () ,
                                    color: Colors.grey)),
                            Padding(
                                padding: EdgeInsets.all(1.0),
                                child: IconButton(
                                    icon: Icon(Icons.share_rounded),
                                    onPressed: () ,
                                    color: Colors.grey)),
                          ],
                        )))

【问题讨论】:

【参考方案1】:

这个怎么样。

从您的代码中,

Padding(
  padding: EdgeInsets.only(right: 10),
  child: IconButton(
    icon: Icon(Icons.play_circle_fill_outlined, size: 45),
    onPressed: () ,
    color: light_mode ? Color(0xFFEA80FC) : Color(0xFF6D6D6D),
  ),
),

到这个。

SizedBox(
  width: 36,
  height: 36,
  child: FloatingActionButton(
    onPressed: () ,
    backgroundColor:
        light_mode ? Color(0xFFEA80FC) : Color(0xFF6D6D6D),
    child: Icon(Icons.play_arrow),
  ),
),

【讨论】:

【参考方案2】:

在您的代码中:

Padding(
                                padding: EdgeInsets.only(right: 10),
                                child: IconButton(
                                    icon: Icon(
                                        Icons.play_circle_fill_outlined,
                                        size: 45),
                                    onPressed: () ,
                                    color: light_mode
                                        ? Color(0xFFEA80FC)
                                        : Color(0xFF6D6D6D))),

您应该为 IconButton 的父级设置颜色,而不是它本身。例如,可以使用带有装饰的容器(通过改变borderRadius可以实现圆形按钮):

Container(
  decoration: BoxDecoration(
    color: const Colors.grey,
    border: Border.all(
      color: Colors.black,
      width: 8,
    ),
    borderRadius: BorderRadius.circular(12),
  ),
padding: EdgeInsets.only(right: 10),
                                child: IconButton(
                                    icon: Icon(
                                        Icons.play_circle_fill_outlined,
                                        size: 45),
                                    onPressed: () ,
                                    color: Colors.white,
),

【讨论】:

以上是关于整个图标按钮变为灰色:颤动的主要内容,如果未能解决你的问题,请参考以下文章

如何将抽屉连接到颤动的动画图标按钮?

在按钮按下时颤动旋转图标并带有动画

如何在颤动中更改特定的图标颜色?

在颤动中旋转图标 180 度动画

如何在颤动中推动替换删除整个导航堆栈?

状态栏图标颜色不会随主题而改变