我正在尝试遍历列表并为列表中的每个"步骤"生成一个小部件(文本(。
打印时,我完全符合预期,但是,我得到错误Column's children must not contain any null values, but a null value was found at index 0
。
我理解,因为我没有返回任何东西。但是如果我确实返回了一些东西,循环就会停止,所以我只是迈出了第一步。
recipeMethodList(recipeMethod) {
for (var step in recipeMethod) {
stepNumber = stepNumber + 1;
Row(
children: <Widget>[
Text('$stepNumber. $step'),
],
);
print('$stepNumber. $step');
}
我用:
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[recipeMethodList(recipeMethod)],
),
您可以尝试更改函数,例如
List<Widget> recipeMethodList(List recipeMethod) {
int stepNumber=0;
return recipeMethod.map((step) {
stepNumber = stepNumber + 1;
return Text('$stepNumber. $step');
}).toList();
}
我通过构建一个新列表解决了这个问题。一个包含我选择的小部件。然后将该列表返回到构建器。
methodCard(recipeMethod, context) {
List<Padding> methodList = [];
for (var step in recipeMethod) {
stepNumber++;
methodList.add(
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15), color: Colors.white),
padding: EdgeInsets.symmetric(horizontal: 10.0),
width: MediaQuery.of(context).size.width,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
child: Text(
'$stepNumber. $step',
style: TextStyle(
fontSize: 16.0,
fontFamily: 'NotoSans',
color: Colors.black),
),
),
],
),
),
),
);
}
return methodList;
}