我在下面写了代码的平静:
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
),
)
]
),
}
)