列表项小于 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]);
}),
我正在制作一个屏幕显示前 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]);
}),