RangeError(索引):无效值:不在范围0..1(含)范围内:2.如何解决?

时间:2020-03-21 10:42:07

标签: flutter mobile-development

我正在构建静态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),
                ],
            ),
          );
        }

2 个答案:

答案 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()在后​​台进行更多的计算以保持灵活性,这对于一小部分列表来说实在太多了。