我正在尝试列出CheckboxListTile。我正在获取检查值的数组。我正在添加所有选中的值数组,并将它们设置为文本列表,但是问题是当取消选中时,我无法删除该值。我尝试如下:
我从checkBox获取checkValue的函数:
onChecked(var items) {
setState(() {
myItems.addAll(items);
});
for (var i = 0; i < myItems.length; i++) {
bool repeated = false;
for (var j = 0; j < nonRepated.length; j++) {
if (myItems[i] == nonRepated[j]) {
repeated = true;
}
}
if (!repeated) {
nonRepated.add(myItems[i]);
}
}
print(nonRepated);
}
我将文本中的值设置如下:
for (int i = 0; i < nonRepated.length; i++) Text(nonRepated[i])
我已经通过了如下功能:
CheckboxWidget(cropsProduce[i].items[i].items[i].data,onChecked)
我的复选框列表
ListView(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
children: widget.values.keys.map((String key) {
return new CheckboxListTile(
title: new Text(key),
value: widget.values[key],
activeColor: Theme.of(context).primaryColor,
checkColor: Colors.white,
onChanged: (bool value) {
setState(() {
widget.values[key] = value;
});
setValues(widget.values[key]);
},
);
}).toList(),
);
void setValues(bool myValue) {
widget.values.forEach((key, myValue) {
if (myValue == true) {
if (tmpArray.contains(key) != widget.values.containsKey(key))
tmpArray.add(key);
widget._onChecked(allValues);
} else if (myValue == false) {
print("Else false");
print(myValue);
tmpArray.remove(key);
widget._onChecked(allValues);
}
});
}