我在所有“Project Cells”中都有一个listview.builder。我从我的类列表中获取索引,它给了我一个错误:
抛出了另一个异常:RangeError(index):无效值:不在0..1范围内,包括:2。
输入字符串:“1,277”输入字符串:“1,277”输入字符串:“1,277”输入字符串:“1,277”输入字符串:“1,277”输入字符串:“1,277”
...
class SchoolProject {
final int index;
final String name;
final String about;
final String subject;
final String daysLeft;
final List<User> projectMembers;
final List<SchoolProjectTask> tasks;
SchoolProject(this.index, this.name, this.about, this.subject,
this.daysLeft, this.projectMembers, this.tasks);
}
class User {
final int index;
final String username;
final String description;
final String school;
User(this.index, this.school, this.description, this.username);
}
var SchoolProjectOne = SchoolProject(
0,
"Historia Prov - Berlinmuren",
"Läs in på Berlinmuren och kubrakrisen, hur usa mot soviet
skapade"
"kalla kriget och hur kriget aldrig bröt ut för att folk var
rädda!",
"History",
"2 Days",
[William],
[
SchoolProjectTask(
0,
"Läs Om Berlinmuren",
"",
"2 Days",
[William]
),
SchoolProjectTask(
1,
"Ta reda på Kubakrisen",
"",
"2 Days",
[William]
),
SchoolProjectTask(
2,
"Kommunism vs Capitalism",
"",
"2 Days",
[William]
),
]
);
Future<List<SchoolProject>> _getSchoolProject() async {
var data = allSchoolProjects;
print(data);
return data;
}
Container(
height: 50,
margin: EdgeInsets.only(left: 10, right: 10, bottom: 12, top:5),
child: FutureBuilder(
future: _getSchoolProject(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if(snapshot.data == null) {
return Container(
alignment: Alignment.centerLeft,
padding: EdgeInsets.all(8),
child: CircularProgressIndicator(
strokeWidth: 2,
),
);
}
else return ListView.builder(
scrollDirection: Axis.horizontal,
padding: EdgeInsets.all(5),
itemCount:
snapshot.data[index].projectMembers.length,
itemBuilder: (BuildContext context, int index) {
return Container(
margin: EdgeInsets.only(right: 10),
child: CircleAvatar(
backgroundColor: Color(0xFFBA68C8),
child:
Text(snapshot.data[index].projectMembers[index].username[0],
style: TextStyle(color: Colors.white),),
),
);
}
);
}
),
)
删除[索引]我认为会工作。
itemCount:snapshot.data [index] .projectMembers.length,
itemCount:snapshot.data [index] .projectMembers.length,
发生这种情况是因为你使用相同的变量index
但是有不同的scopes
集,所以你在这里有4个项目:
itemCount:snapshot.data [index] .projectMembers.length,
但是当你以后使用它时
文本(snapshot.data [index] .projectMembers [index] .username [0],style:TextStyle(color:Colors.white),),
对于用户名只有1个[william]
它永远不会存在索引2,所以我认为你可以做像this example这样的事情
在内部,你可以创建一个Text Widget,并使用胖箭头函数或索引的匿名函数添加到那里,作为所示文档中的示例。