flutter - Flutter:禁用带有资产作为图标的 IconButton
问题描述
我想根据条件禁用类IconButton
内部State<T>
。官方文档指出,为了禁用按钮,onPressed
回调应该是null
. 这会使图标变灰。
然而,对于具有自定义资产的图标来说,情况并非如此。例如,当有以下两个图标时
IconButton(
icon: Image.asset(somePath),
iconSize: 24,
onPressed: condition?()=>{someCallback();}:null),
IconButton(
icon: Icon(
Icons.settings,
),
iconSize: 24,
onPressed: condition?()=>{someCallback();}:null)
然后第一个是灰色的,但后者不是。那么如何禁用IconButton
带有Image.asset
图像提供程序的功能呢?
解决方案
只是因为IconThemeData
可以应用在它们的颜色上Text
并且Icon
可以更改它们的颜色,但不能在没有颜色属性的资产图像上应用。
不过,你可以像这样改变它
IconButton(
icon: Image.asset(somePath, color: condition ? null : Colors.grey,),
iconSize: 24,
onPressed: condition ? () {
someCallback();
} : null,
),
IconButton(
icon: Icon(
Icons.settings,
),
iconSize: iconSize,
onPressed: condition ? () {
someCallback();
} : null,
),
推荐阅读
- mysql - MySQL:如何制作拒绝未成年员工的触发器?
- python - Django过滤器内的条件
- python - 要在 Sagemaker 中使用的 tf.distribute.cluster_resolver.TPUClusterResolver(tpu_name) 的替代方案?
- android - Flutter 应用程序未在任何编辑器上运行
- java - Pivotal/tap 在 brew 上失败
- javascript - querySelectorAll 替代 vuejs nuxtjs
- python - 访问列表中的特定按钮
- react-native - React Native 有条件地设置状态
- javascript - 将 jinja2 模板代码添加到 javascript innerHTML
- c++ - constexpr 使用标准库算法