首页 > 解决方案 > 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图像提供程序的功能呢?

标签: flutterdart

解决方案


只是因为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,
),

推荐阅读