列表项小于 3 时出现索引错误

Getting index error while list item is less than 3

我正在制作一个屏幕显示前 3 名玩家的游戏...它运行良好但当列表项小于 3 时显示索引错误..在这种情况下,我想要如下输出

约翰
没有记录
无记录

import 'package:flutter/material.dart';
import 'datafile.dart';
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Top 3 Players"),
        ),
        body: ListView.builder(
            itemCount: 3,
            itemBuilder: (context, index) {
              return Text(games[index].player);

            }),
      ),
    );
  }
}

由于您将 itemCount 的值硬编码为 3,所以如果 games.length 不等于或大于 3,肯定会抛出错误。

解决方法如下:

      Column(
        children: [
          ListView.builder(
              physics: const NeverScrollableScrollPhysics(),
              shrinkWrap: true,
              itemCount: games.length >= 3 ? 3 : games.length,
              itemBuilder: (context, index) {
                return Text(games[index].player!);
              }),
          if (games.length < 3) ...[
            for (int x = 0; x < (3 - games.length); x++) ...[
              const Text(
                "No Record!",
              )
            ]
          ],
        ],

这是我找到的解决方案

ListView.builder(
        itemCount: 3,
        itemBuilder: (context, index) {
          return Text(games.length == 3
              ? games[index]
              : (index > games.length - 1)
                  ? 'No Record'
                  : games[index - games.length < 0 ? index : games.length]);
        }),