首页 > 解决方案 > 创建具有形状装饰的 IconButton 给出无效的常量值颤动

问题描述

我是颤振的新手,我正在寻找IconButton椭圆形背景。

这是我正在使用的。

 Ink(
    decoration: const ShapeDecoration(
    color: Theme.of(context).accentColor,,
    shape: CircleBorder(),
     ),
   child: IconButton(
      icon: Icon(Icons.add),
      color: Theme.of(context).primaryColor,
      onPressed: () {},
      ),
 ),

你能告诉我如何Theme在这个按钮中添加我的颜色,因为我有暗模式,当用户启用暗模式时,我也改变了按钮颜色和背景等。

标签: flutter

解决方案


根据官方文档链接在这里

您应该能够使用IconThemeData设置颜色

定义图标的颜色、不透明度和大小。

IconTheme使用它来控制小部件子树中图标的颜色、不透明度和大小。

要获取当前图标主题,请使用IconTheme.of

因此,需要为 IconButton 提供颜色属性,因为它会覆盖 IconTheme 大小属性。如果您希望您的按钮具有从 IconTheme 派生的颜色,那么您应该制作自定义 IconButton 来为您设置颜色。

...在你的情况下,我会通过 -甚至可能将它存储在一个单独的变量中,比如currentThemeColor - 当前颜色主题并将其设置在这里:

...
IconThemeData(size: 48.0, color: currentThemeColor)
...

此外,您可能需要创建自定义 IconButton:

class CustomIconButton extends StatelessWidget {
  CustomIconButton({Key key, this.onPressed, this.icon});

  final Function onPressed;
  final Icon icon;

  @override
  Widget build(BuildContext context) {
    IconThemeData iconThemeData = IconTheme.of(context);
    return IconButton(
        onPressed: onPressed, color: iconThemeData.color, icon: icon);
  }
}

推荐阅读