将列表视图元素复选框的位置传递给 onChanged 回调



我在下面写了代码的平静:

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)回调中使用位置变量,但我无法将其作为参数传递...... 还有其他方法可以做到吗?

提前感谢并继续编码 <3

解决方案:匿名函数

在 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
),
)
]
),
}
)

最新更新