Flutter如何将图片资源作为animated_icon_button库AnimatedIconItem的图标使用
报错原因
AnimatedIconItem组件的icon参数在源码中被限定为Icon类型,仅支持接收Icon类实例,你传入的ImageIcon、Image、IconButton都不属于Icon类型,因此触发类型不匹配的报错。
解决方案
方案1:修改库源码适配(最便捷)
直接修改第三方库的参数类型约束,无需调整你的业务代码逻辑:
- 定位到项目依赖中
animated_icon_button库的animated_icon_item.dart定义文件 - 将
icon参数的类型声明从final Icon icon修改为final Widget icon,放开组件类型限制,支持传入任意Widget作为图标 - 修改后你之前尝试的图片写法都可正常生效,示例代码如下:
AnimatedIconItem( icon: Image.asset( 'assets/icon.png', width: 24, height: 24, color: Color(0xFF3A5A98), ), backgroundColor: Colors.white, ),
- 避免后续
pub get操作覆盖修改的话,你可以将库源码拷贝到本地项目目录,在pubspec.yaml中改用本地路径依赖该库即可。
方案2:不修改源码的兼容实现
如果不想改动第三方库源码,可以将图片资源转换为自定义图标字体使用:
- 把你的png图标通过图标转换工具生成ttf字体文件
- 在
pubspec.yaml中引入自定义图标字体,生成对应的IconData常量 - 直接将自定义
IconData传入Icon组件即可适配原有参数要求,示例代码如下:
AnimatedIconItem( icon: Icon(CustomIcons.yourCustomIcon, color: Color(0xFF3A5A98)), backgroundColor: Colors.white, ),
内容的提问来源于stack exchange,提问作者utarid
相关产品推荐
相关产品推荐

