Flutter中ListView ListTile内图标不显示问题求助
Flutter ListTile中自定义类图标无法显示的解决办法
我在ListView的ListTile里通过自定义类显示图标,但图标始终无法正常显示,相关代码如下:
界面代码片段
CircleAvatar( backgroundColor: Color(forumdata.getfcolor(index)), child: Icon( forumdata.getIcon(index), color: Color(forumdata.geticolor(index)), ), ),
ForumData类和Forum类代码
class ForumData { List<Forum> _forumData =[ Forum(0xff517C7E, 0xff3ABEC5, Icons.announcement,"Welcome New Members & FAQs", "cat", "Welcome new Members & FAQs on how to use this online social support community", "8 aug 2022, 14:39", 123), Forum(0xff5C9A9E, 0xff03F2FF, Icons.favorite_outline,"I Care For My Partner With Dementia", "cat", "Welcome new Members & FAQs on how to use this online social support community", "28 sep 2022, 22:11", 13), Forum(0xff3ABEC5, 0xff00DEEB, Icons.home_outlined,"I Care For My Parent With Dementia", "cat", "Welcome new Members & FAQs on how to usethis online social support community", "12 jan 2022, 19:39", 20), ]; IconData getIcon(int index){ return _forumData[index].icon; } } import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class Forum{ IconData icon = Icons.add; String title = ""; String user = ""; String desc = ""; String datetime = DateTime.now().toString(); int noofposts = 0; int color = 0; int icolor = 0; Forum(int fcolor, int icolor, IconData ficon, String forumtitle, String userforum, String forumdesc, String datetimeforum, int nop){ color = fcolor; icolor = icolor; icon = ficon; title = forumtitle; user = userforum; desc = forumdesc; datetime = datetimeforum; noofposts = nop; } }
问题分析与解决
你的IconData用法本身没有问题,核心问题是ForumData类缺少getfcolor和geticolor两个方法——界面代码里调用了这两个方法,但你只实现了getIcon,这会导致运行时异常,进而图标无法渲染。
另外要确认forumdata实例已正确初始化:
final ForumData forumdata = ForumData();
修复代码
在ForumData类中补充缺失的方法:
class ForumData { List<Forum> _forumData =[ // 原有的Forum实例保持不变 ]; IconData getIcon(int index){ return _forumData[index].icon; } // 获取背景色 int getfcolor(int index) { return _forumData[index].color; } // 获取图标颜色 int geticolor(int index) { return _forumData[index].icolor; } }
修改后,CircleAvatar的背景色、图标颜色都能正确读取,图标即可正常显示。
内容的提问来源于stack exchange,提问作者ge widydr
相关产品推荐
相关产品推荐

