gpt4 book ai didi

android - flutter - RangeError(索引)

转载 作者:IT王子 更新时间:2023-10-29 06:55:05 25 4
gpt4 key购买 nike

我在构建 ListView 时遇到错误。在这个 flutter 应用程序中,我尝试在单击按钮时为每一列计算一些点。但我总是遇到同样的错误。

══╡ EXCEPTION CAUGHT BY GESTURE

I/flutter (28729): The following RangeError was thrown while handlinga gesture: I/flutter (28729): RangeError (index): Invalid value: Validvalue range is empty: 0

这是我的代码,我希望有人能够帮助我修复错误:

import 'package:flutter/material.dart';


class Punktezaehler extends StatefulWidget{

final List<String> spieler_namen;
Punktezaehler(this.spieler_namen);

@override
State<StatefulWidget> createState() => new _Punktezaehler(this.spieler_namen);
}


class _Punktezaehler extends State<Punktezaehler>{

final List<String> spieler_namen;
_Punktezaehler(this.spieler_namen);

List<int> punkteanzahl_teamEins = [];
List<int> punkteanzahl_teamZwei = [];

int team1_hinzugezaehlt = 0;
int team2_hinzugezaehlt = 0;

@override
Widget build(BuildContext context) {


var spieler1 = spieler_namen[0].substring(0,3);
var spieler2 = spieler_namen[1].substring(0,3);
var spieler3 = spieler_namen[2].substring(0,3);
var spieler4 = spieler_namen[3].substring(0,3);

return new Scaffold(
appBar: new AppBar(
automaticallyImplyLeading: false,
title: new Text("$spieler1 & $spieler2 vs" +" $spieler3 & $spieler4"),
actions: <Widget>[

],
),
body: Container(
child: new Row(
children: <Widget>[
new Column(
children: <Widget>[
new IconButton(
icon: Icon(Icons.exposure_plus_2),
onPressed: () => punkte_hinzuzaehlen(1, 2)
)
],
),
new Padding(padding: EdgeInsets.only(left: 100.0)),
new Expanded(
child: ListView.builder(
itemCount: punkteanzahl_teamEins.length, //--> Error is thrown here
itemBuilder: (context, index){
return Text(punkteanzahl_teamEins[index].toString());
}
),
),
new Expanded(
child: ListView.builder(
itemCount: punkteanzahl_teamZwei.length, //--> Error is thrown here
itemBuilder: (context, index){
return Text(punkteanzahl_teamZwei[index].toString());
}
),
),
new Column(
children: <Widget>[
new IconButton(
icon: Icon(Icons.exposure_plus_2),
onPressed: () => punkte_hinzuzaehlen(2, 2)
)],
)
],
)
),
);
}

void punkte_hinzuzaehlen(int team, int nummer){
if (team == 1){
setState(() {
punkteanzahl_teamEins[team1_hinzugezaehlt] = nummer;
team1_hinzugezaehlt++;
});
}
else if(team == 2){
setState(() {
punkteanzahl_teamZwei[team2_hinzugezaehlt] = nummer;
team2_hinzugezaehlt++;
});
}
}
}

最佳答案

当你点击一个按钮时你正在调用这条线的问题

punkteanzahl_teamEins[team1_hinzugezaehlt]

team1_hinzugezaehlt 的初始值为 0 但每次用户单击该按钮时,该值都会增加 1所以假设您的 punkteanzahl_teamEins 列表在第四次单击时包含 2 个项目,值 team1_hinzugezaehlt 将是 4 witch 将导致此错误。所以解决方案是检查值是否在范围内

  if (team1_hinzugezaehlt<punkteanzahl_teamEins.length){
setState(() {
punkteanzahl_teamEins[team1_hinzugezaehlt] = nummer;
team1_hinzugezaehlt++;
});
}

对第二个函数做同样的事情

关于android - flutter - RangeError(索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com