Флаттер Stepper горизонтального типа не работает - PullRequest
0 голосов
/ 24 февраля 2019

У меня проблема с изменением типа степпера с вертикального на горизонтальный.

Это мой код:

body: new ListView.builder(
    itemCount: data == null ? 0 : 5,
    itemBuilder: (BuildContext context, int index) {
      return new Card(
          //child: new Text(data[index]["title"]),
          child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Stepper(
          steps: my_steps,
          type: StepperType.horizontal,
          controlsBuilder: (BuildContext context,
              {VoidCallback onStepContinue, VoidCallback onStepCancel}) {
            return Row(
              children: <Widget>[
                Container(
                  child: null,
                ),
                Container(
                  child: null,
                ),
              ],
            );
          },
          //type: StepperType.horizontal,
        ),
      ));
    },
  ),

После того, как я раскомментировал тип, я получаю эту ошибку:

I / трепетание (10148): ══╡ ИСКЛЮЧЕНИЕ ВЫСТУПЛЕНО ПОСТАВЛЯЮЩЕЙСЯ БИБЛИОТЕКОЙ═════════════════════════════ I / flutter (10148): во время executeLayout () было выброшено следующее утверждение: I / flutter (10148): у потомков RenderFlex ненулевое сгибание, но входящие ограничения по высоте не ограничены.I / flutter (10148): когда столбец находится в родительском элементе, который не обеспечивает ограничение конечной высоты, например, если это I / flutter (10148): при вертикальной прокрутке он будет пытаться сжать дочерние элементы вдольвертикальная ось.Установка I / флаттера (10148): сгибание на дочернем элементе (например, с использованием Expanded) указывает, что дочерний элемент должен расширяться, чтобы заполнить оставшийся I / флаттер (10148): пространство в вертикальном направлении.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Ваш ListView имеет неограниченную высоту, поэтому он не знает, сколько места нужно использовать для каждого ребенка, то есть Stepper.Дайте ему некоторые ограничения, такой минимальный размер высоты для каждого, и вы должны быть в порядке.

 (...)
 ConstrainedBox(
              constraints: BoxConstraints.tightFor(height: 200.0),
              child: Stepper(
                steps: my_steps(),
                type: StepperType.horizontal,
 (...)
0 голосов
/ 25 февраля 2019

Вы можете использовать виджет SizedBox () или Container () и установить его высоту

SizedBox(
      height: 200,
      child: Card(
        //child: new Text(data[index]["title"]),
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: Stepper(
              steps: my_steps(),
              type: StepperType.horizontal,
              controlsBuilder: (BuildContext context,
                  {VoidCallback onStepContinue, VoidCallback onStepCancel}) {
                return Row(
                  children: <Widget>[
                    Container(
                      child: null,
                    ),
                    Container(
                      child: null,
                    ),
                  ],
                );
              },
              //type: StepperType.horizontal,
            ),
          )),
    )
...