首页 > 解决方案 > Flutter:向 LIst 添加值会触发 RangeError(索引)

问题描述

通过这个函数,我添加了用户在 UI 中选择的那么多 DataRows。我想要做的是第一行的选择值是“besetzungsList”的第一个值,第二行的选择值是列表的第二个值,依此类推。如果选择了第一行中的新值,我想替换该值。

addAufgabe() {
    print(besetzungsList);
    if (aufgabe.text.isNotEmpty || zeit.text.isNotEmpty) {
      setState(() {});

      if (event != null) {
        ...
      } else {
        for (var i = 0; i < currentValue; i++) {
          aufgabenList.add(aufgabe.text);
          zeitList.add(zeit.text);
          dataTableRows.add(
            DataRow(
              cells: [
                DataCell(Text(aufgabe.text), onTap: () {
                  removeRow(i);
                }),
                DataCell(Text(zeit.text), onTap: () {
                  removeRow(i);
                }),
                DataCell(DropDown(
                  hint: "Wählen",
                  users: users,
                  besetzungsListChanged: (String value) {
                    for (var j = 0; j < dataTableRows.length; j++) {
                      setState(() {
                        besetzungsList[j] = value;
                      });
                    }

                    //  }
                  },
                  fromDropDown: (bool value) => fromDropDown = value,
                ))
              ],
            ),
          );
        }
      }
    }

标签: flutter

解决方案


似乎您在 i 处删除了一个元素,并在同一索引处添加了一个元素,这就是原因。你应该反过来做...

besetzungsList.insert(i, value);
besetzungsList.removeAt(i + 1);

推荐阅读