问题描述
样本数据:
var electricianmulti = [
new Multimodel(
question: "What services are you looking for?",options: ["Complete wiring","switches","water motor","MCB & fuse"],new Multimodel(
question: "What time of the day do you prefer?",options: ["Early Morning","Morning","Afternoon","Evening"],];
我正在从 listview.generate 制作复选框,如下所示-
children: <Widget>[
...List.generate(
electricianmulti[i].options.length,(index) => Container(
padding: EdgeInsets.all(5),margin: EdgeInsets.all(10),child: CheckBoxListTile(
// controlAffinity: ListTileControlAffinity.leading,title: new Text(
electricianmulti[i].options[index].toString(),style: optionstxt,),value:isselected,activeColor: Colors.blue,checkColor: Colors.white,onChanged: (bool value) {
setState(() {
isselected=value
});
},
这个代码就像我点击任何一个框都被选中一样。我尝试制作一组 bool 并根据 'i'
更新它,但它似乎也不起作用。我在这里做错了什么?
解决方法
value: isselected
正在获取一个布尔值并将其分配给所有复选框。 Change isselected to a list of boolean 然后使用
value: isselected[i];
也在 setState 中使用
isselected[i] = value;
确保选中的长度等于复选框的数量。