You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态创建布尔列表报错RangeError(index),求问题原因及解决办法

问题原因

你写的代码里,variableOne和variableTwo初始是空列表,长度为0。Dart里不能直接给空列表的索引位置赋值——因为此时列表里根本没有对应索引的元素,比如索引0的位置不存在,所以会抛出RangeError越界错误。

解决方法

有几种简单的修正方式:

方法1:用add()方法添加元素

循环里通过add往列表末尾追加元素,这是动态列表添加元素的标准方式:

List<bool> variableOne= [];
List<bool> variableTwo= [];

for (var i = 0; i < 3; i++) {
   variableOne.add(false);
   variableTwo.add(true);
}

方法2:初始化时直接指定长度并填充值

如果知道列表固定长度,直接用List.filled创建更高效:

// 创建长度为3的列表,所有元素默认false
List<bool> variableOne = List.filled(3, false);
// 创建长度为3的列表,所有元素默认true
List<bool> variableTwo = List.filled(3, true);

方法3:用List.generate生成列表

适合需要动态生成每个元素的场景(这里每个元素值相同,也能用):

List<bool> variableOne = List.generate(3, (_) => false);
List<bool> variableTwo = List.generate(3, (_) => true);
验证结果

上面三种方法都能得到你期望的结果:

variableOne[0] = false;
variableTwo[0] = true;
variableOne[1] = false;
variableTwo[1] = true;
variableOne[2] = false;
variableTwo[2] = true;

内容的提问来源于stack exchange,提问作者BradG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:15:01