【问题标题】:Flutter Listview.builder, RangeError Index Not in range 0..1, inclusive: 2. How do I fix?Flutter Listview.builder, RangeError Index Not in range 0..1, inclusive: 2. 我该如何解决?
【发布时间】:2019-08-24 02:14:27
【问题描述】:

我的所有“项目单元”中都有一个 listview.builder。我从我的类列表中获取索引,它给了我一个错误:

抛出了另一个异常: RangeError (index): Invalid value: Not in 范围 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


    【解决方案1】:

    删除我认为可行的 [index]。

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

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

    【讨论】:

    • 你是什么意思?我需要为每个单元格返回 (projectMembers.length)。问题是我无法在每个圈子头像中显示每个用户的名字!
    【解决方案2】:

    发生这种情况是因为您使用了相同的变量 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 的操作

    您可以在其中创建一个文本小部件作为回报,并使用胖箭头函数或按索引的匿名函数在其中添加,如所示文档中的示例。

    【讨论】:

    • 谢谢,但是如何在每个圆形头像中显示每个用户的用户名?
    • 是否可以像第三个参数一样添加到 Listview.builder (Buildcontext context, int index, int userindex)?
    猜你喜欢
    • 2021-11-28
    • 2019-11-21
    • 2021-10-27
    • 2023-02-10
    • 2021-09-07
    • 2021-02-28
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多