Flutter Listview.builder,RangeError Index不在0..1范围内,包括:2。如何修复?

问题描述 投票:0回答:2

我在所有“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),),
                  ),
                      );
                      }
                    );
                   }
             ),
                )
listview dart flutter
2个回答
0
投票

删除[索引]我认为会工作。

itemCount:snapshot.data [index] .projectMembers.length,

itemCount:snapshot.data [index] .projectMembers.length,


0
投票

发生这种情况是因为你使用相同的变量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,并使用胖箭头函数或索引的匿名函数添加到那里,作为所示文档中的示例。

© www.soinside.com 2019 - 2024. All rights reserved.