我在下面编写了和平的代码:
int numberLines = 50;
List<bool> checkBoxValues = [];
int i = 0;
while(i < numberLines)
{
checkBoxValues.add(false);
i++;
}
void medCheckedChanged(bool value) => setState(() => checkBoxValues[position] = value);
ListView.builder
(
itemCount: numberLines,
itemBuilder: (context, position)
{
return Column
(
children: <Widget>
[
Container
(
height: resLayout.getScreenHeightPercentage(context, 6),
width: resLayout.getScreenHeightPercentage(context, 14),
alignment: Alignment(0, 0),
child: Checkbox
(
value: checkBoxValues[position],
onChanged: medCheckedChanged, //pass to medCheckedChanged() the position
),
)
]
),
}
)
如您所见,我需要在medCheckedChanged(bool value)
回调中使用position变量,但无法将其作为参数传递...。
还有其他方法吗?
预先感谢,并使用<3
保持编码答案 0 :(得分:1)
解决方案:匿名函数
在Dart中,您可以创建一个行函数,并且可以将参数传递给它们。希望这行得通!
int numberLines = 50;
List<bool> checkBoxValues = [];
int i = 0;
while(i < numberLines)
{
checkBoxValues.add(false);
i++;
}
void medCheckedChanged(bool value) => setState(() => checkBoxValues[position] = value);
ListView.builder
(
itemCount: numberLines,
itemBuilder: (context, position)
{
return Column
(
children: <Widget>
[
Container
(
height: resLayout.getScreenHeightPercentage(context, 6),
width: resLayout.getScreenHeightPercentage(context, 14),
alignment: Alignment(0, 0),
child: Checkbox
(
value: checkBoxValues[position],
onChanged: (value) => medCheckedChanged(value), //pass to medCheckedChanged() the position
),
)
]
),
}
)