创建图标按钮与形状装饰给出无效的常量值颤振



我是颤振新手,我正在用椭圆形背景寻找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颜色,因为我也有暗模式,当用户启用暗模式时,它会更改按钮颜色和背景等。

根据官方文档 链接在这里:

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

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

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

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

因此,需要为 IconButton 提供 color 属性,因为这会覆盖 IconTheme size 属性。如果您希望按钮具有从IconTheme派生的颜色,则应创建自定义IconButton,为您设置颜色。

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

...
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),
)

最新更新