Flutter中如何自定义可复用SubCategoryTiles Widget并传入不同图标
问题解决:SubCategoryTiles组件图标传入报错
错误原因
CircleAvatar加了const修饰,但你传入的category_Icon是组件的动态参数(非编译时常量),const组件的子元素必须是常量,两者冲突导致报错。category_Icon是IconData类型,不能直接作为Widget放在child属性中,必须用Icon组件包裹后才能作为Widget使用。
修正后的代码
class SubCategoryTiles extends StatelessWidget { const SubCategoryTiles({ required this.titleText, required this.onTapHandler, required this.category_Icon, }); final Widget titleText; final VoidCallback onTapHandler; final IconData category_Icon; @override Widget build(BuildContext context) { return ListTile( // 移除CircleAvatar的const修饰 leading: CircleAvatar( backgroundColor: Colors.white, // 用Icon组件包裹传入的category_Icon,可按需设置颜色 child: Icon( category_Icon, color: Colors.deepOrange, ), ), title: titleText, trailing: const Icon(Icons.arrow_right), onTap: onTapHandler, ); } }
使用示例
在父组件中调用时,直接传入不同的IconData即可实现不同位置显示不同图标:
SubCategoryTiles( titleText: const Text("商品分类"), onTapHandler: () { /* 点击逻辑 */ }, category_Icon: Icons.shopping_cart, )
内容的提问来源于stack exchange,提问作者Mahender Kumar
相关产品推荐
相关产品推荐

