flutter - 创建具有形状装饰的 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
在这个按钮中添加我的颜色,因为我有暗模式,当用户启用暗模式时,我也改变了按钮颜色和背景等。
解决方案
根据官方文档链接在这里:
您应该能够使用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);
}
}
推荐阅读
- postgresql - 过滤多对多关系,其中一个实体与所有其他实体有关系,而不仅仅是一些
- android - 使用 contentResolver 将 docx 转换为 Base64 会在 Android 上提供不可读的格式
- android - 如何在airbnb Epoxy中分配网格跨度?
- vue.js - 如何在单元测试期间使用带有 shallowMount 的 vue-test-utils 找到 elementUi 的组件?
- r - ggplot错误:无法将类“c(”gg”,”ggplot“)”强制转换为data.frame
- php - 检查 sumbited 单选按钮是否为真 - symfony
- php - 如何在 laravel 5.7 中使用预加载从具有外键的子模型实例中获取父值
- c# - 锁定非静态方法
- gmail - 如何解释 Gmail 用户配额的差距
- python - 从 VBA 到烧瓶的 HTTP 请求的编码问题