flutter - 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,
))
],
),
);
}
}
}
解决方案
似乎您在 i 处删除了一个元素,并在同一索引处添加了一个元素,这就是原因。你应该反过来做...
besetzungsList.insert(i, value);
besetzungsList.removeAt(i + 1);
推荐阅读
- python - 如何在我的 python GUI 程序中使用 aria2?
- google-app-engine - GAE Cloud-sql-proxy - 如何在本地连接到两个数据库?
- vue.js - 当我单击列出所有项目的 vue 时如何显示项目 vue?
- java - 我需要在将对象放入 MySql 之前对其进行序列化吗?
- java - 如何将 SHA1 证书作为 PrivateKeyEntry 类型而不是trustedCertEntry 导入密钥库
- r - 如何在 R 数据框中制作漂亮的“自动”数字格式?
- spring - 自定义登录JSP页面 Springboot + SpringSecurity
- twitter-bootstrap - 隐藏在黑色叠加层下的 Bootstrap 模态弹出视频
- flutter - 没有为类 'String' 定义 getter 'todoText'
- graphql - 灯塔嵌套突变 FK 字段未填充