列表项小于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);
}),
),
);
}
}

这是我找到的解决方案

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]);
}),

由于您将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!",
)
]
],
],

最新更新