我正在构建静态ListView。我该如何解决这个错误?另外如何将UI添加到ListView?
以下是我的课程MatchData代码:
class MatchData {
String date, team1, team2, time;
MatchData({@required this.date, @required this.team1, @required this.team2, @required this.time});
}
以下是我要在ListView中显示的数据:
final List<MatchData> dayMatch = [
MatchData(
date: '12/02/2020',
team1: 'Mumbai Indians',
team2: 'Bangalore',
time: '16:00'),
MatchData(
date: '12/02/2020',
team1: 'Mumbai Indians',
team2: 'Bangalore',
time: '16:00')
];
match() {
return dayMatch;
}
以下是我的小部件的正文:
body: Center(child: ListView.builder(itemBuilder: (context, index) {
return Card(
child: Row(
children: <Widget>[
Text(dayMatch[index].date),
Text(dayMatch[index].team1),
Text(dayMatch[index].time),
Text(dayMatch[index].team2),
],
),
);
}
答案 0 :(得分:0)
您可以使用“ itemCount”。
child: ListView.builder(
itemCount: dayMatch.length,
itemBuilder: (context, index) {
return Card(
child: Row(
children: <Widget>[
Text(dayMatch[index].date),
Text(dayMatch[index].team1),
Text(dayMatch[index].time),
Text(dayMatch[index].team2),
],
),
);
},
),
答案 1 :(得分:0)
如果您未指定itemCount
,并且屏幕足够大,可以显示十个项目,那么ListView.builder()
会生成十个以上的子级,如果向下滚动,则根据需要甚至更多。
在您的情况下,ListView.builder()
尝试构建两个以上的子级,而您的列表(dayMatch)仅包含两个元素,这就是发生错误的原因。
要解决此问题,只需将项目数量传递给itemCount
参数,或者如果数量固定且较小,最好使用default constructor of ListView来解决。 ListView.builder()
在后台进行更多的计算以保持灵活性,这对于一小部分列表来说实在太多了。