首页 > 解决方案 > 试图填写班级列表

问题描述

真的很抱歉,我是个初学者……最后,我只有一个名称/位置相同的 8 个 TimeCardDayStrip 列表,而它应该是 8 个不同的名称/角色。我不明白我在这里做错了什么:非常感谢

'''
class TimeCardDayStrip {
  String name, position;
  DateTime day;

  @override
  String toString(){
    return '{ $this.name, $this.position }';
  }
}

void main() {
  var tcds = TimeCardDayStrip();
  var listOfTcds = [];
  List<String> names, roles;
   names = ["Michael", "Gunnell", "Byrne", "Aspromonte", "Davis", "Adam Jordan", "Mirko"];
  roles = ["Director", "Vice", "President", "1ST", "KEY 2ND", "2ND", "BASECAMP PA", "PA", " PA", "Add'l PA"];

  for (int i = 0; i < names.length; i++) {
    tcds.name = names[i];
    tcds.position = roles[i];
    listOfTcds.add(tcds);
    // checking the list as it creates
    print(listOfTcds[i].name+' is '+listOfTcds[i].position);
  }
  //print the list of card to check
  print('print the list of time card to check');
  for (int x = 0; x < listOfTcds.length; x++){
    print (listOfTcds.elementAt(x).name);
  }
}
'''

标签: listclassflutterdart

解决方案


如果您只想打印每个名称:将其放入循环中(您应该在每个循环中创建新对象,而不是更新相同的对象)

 for (int i = 0; i < names.length; i++) {

    var tcds = TimeCardDayStrip();

    tcds.name = names[i];
    tcds.position = roles[i];
    listOfTcds.add(tcds);

    // checking the list as it creates
    print('${listOfTcds[i].name} is ${listOfTcds[i].position}');
}

然后稍后

 listOfTcds[x].name 

如果要显示内容:

  @override
  Widget build(BuildContext ctx) {
    return ListView.builder(
            itemCount: listOfTcds.length,
            itemBuilder: (context, index) {
              return CustomTile(item: listOfTcds[index]);
            },
          );
  }

推荐阅读