Flutter 创建带有形状装饰的图标按钮,并给出无效的常量值

Flutter 创建带有形状装饰的图标按钮,并给出无效的常量值,flutter,Flutter,我是新来的,我正在寻找椭圆形背景的图标扣 这是我正在使用的 Ink( decoration: const ShapeDecoration( color: Theme.of(context).accentColor,, shape: CircleBorder(), ), child: IconButton( icon: Icon(Icons.add), color: Theme.of(context).primaryColor,

我是新来的,我正在寻找椭圆形背景的图标扣

这是我正在使用的

 Ink(
    decoration: const ShapeDecoration(
    color: Theme.of(context).accentColor,,
    shape: CircleBorder(),
     ),
   child: IconButton(
      icon: Icon(Icons.add),
      color: Theme.of(context).primaryColor,
      onPressed: () {},
      ),
 ),
您能告诉我如何在这个按钮中添加我的主题颜色吗?因为我有暗模式,当用户启用暗模式时,它也会改变按钮的颜色和背景等。

根据官方文件:

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

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

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

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

因此,需要为IconButton指定color属性,因为这会覆盖IconTheme size属性。如果您希望按钮的颜色来源于IconTheme,则应制作自定义IconButton,为您设置颜色

。。。在您的情况下,我会传递(甚至可能将其存储在一个单独的变量中,如currentThemeColor)当前颜色主题,并将其设置在此处:

...
IconThemeData(size: 48.0, color: currentThemeColor)
...
此外,您可能需要创建自定义图标按钮:

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);
  }
}
根据官方文件:

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

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

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

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

因此,需要为IconButton指定color属性,因为这会覆盖IconTheme size属性。如果您希望按钮的颜色来源于IconTheme,则应制作自定义IconButton,为您设置颜色

。。。在您的情况下,我会传递(甚至可能将其存储在一个单独的变量中,如currentThemeColor)当前颜色主题,并将其设置在此处:

...
IconThemeData(size: 48.0, color: currentThemeColor)
...
此外,您可能需要创建自定义图标按钮:

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);
  }
}
使用FlatButton可以获得相同的结果

FlatButton(
  onPressed: () {
  },
  color: Theme.of(context).hintColor.withOpacity(0.5),
  shape: CircleBorder(),
  child: Icon(Icons.add, color: Theme.of(context).primaryColor),
)
使用FlatButton可以获得相同的结果

FlatButton(
  onPressed: () {
  },
  color: Theme.of(context).hintColor.withOpacity(0.5),
  shape: CircleBorder(),
  child: Icon(Icons.add, color: Theme.of(context).primaryColor),
)

问题不在图标按钮中问题在形状装饰中所以,问题解决了吗?如果没有,请让我知道,以便我可以尝试帮助进一步调查我使用FlatButton创建类似的按钮问题不在图标中按钮问题在形状装饰中所以,问题解决了吗?如果没有,请告诉我,以便我可以尝试帮助进行进一步调查。我使用FlatButton创建了类似的按钮