Дочерние столбцы не могут возвращать значение null, но возвращение остановит цикл - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь перебрать список и создать виджет (текст) для каждого «шага» в списке.

При печати я получаю именно то, что ожидалось, однако получаю сообщение об ошибке Column's children must not contain any null values, but a null value was found at index 0.

Насколько я понимаю, я ничего не возвращаю. Но если я возвращаю что-то, l oop останавливается, поэтому я просто получаю первый шаг.

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

Ответы [ 2 ]

0 голосов
/ 01 июня 2020

Я решил это, построив новый список. Тот, который содержит виджеты по моему выбору. Затем возвращаем этот список строителю.

    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;
  }
0 голосов
/ 28 мая 2020

вы можете попробовать изменить функцию, например

List<Widget> recipeMethodList(List recipeMethod) {
  int stepNumber=0;
  return recipeMethod.map((step) {
    stepNumber = stepNumber + 1;
    return Text('$stepNumber. $step');
  }).toList();
}
...