Ошибка BoxConstraints при растягивании виджета строки - PullRequest
0 голосов
/ 02 августа 2020

У меня есть виджет Card в виджете ListView, и карта имеет следующую структуру кода:

return Card(
      child: Row(
        // crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          Image(
            image: AssetImage('assets/images/my-img.jpg'),
            width: 150,
          ),
          Expanded(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceBetween, // THIS HAS NO EFFECT
              children: <Widget>[
                Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text(content.title),
                    Text(content.description),
                  ],
                ),
                Row(
                  // crossAxisAlignment: CrossAxisAlignment.baseline,
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: <Widget>[
                    Row(
                      children: <Widget>[
                        Icon(Icons.accessibility),
                        Text('cool')
                      ],
                    ),
                    Text('something else'),
                  ],
                )
              ],
            ),
          ),
        ],
      ),
    );

Я пытаюсь сделать column в row иметь выравнивание spaceBetween, так как прямо сейчас column центрировано по вертикали. Я попытался добавить CrossAxisAlignment.stretch к виджету Row, но получаю сообщение об ошибке:

BoxConstraints устанавливает бесконечную высоту

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Вы можете добавить SizedBox между столбцом и строкой.

Expanded(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text(content.title),
                    Text(content.description),
                  ],
                ),
                //Sized Box
                SizedBox(height: //whatever double),
                Row(
                  crossAxisAlignment: CrossAxisAlignment.baseline,
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: <Widget>[
                    Row(
                      children: <Widget>[
                        Icon(Icons.accessibility),
                        Text('cool')
                      ],
                    ),
                    Text('something else'),
                  ],
                )
0 голосов
/ 02 августа 2020

Column s занимают всю доступную высоту. Оберните Column внутрь Expanded с Container фиксированной высоты.

Чтобы Column занимал как можно больше места, установите mainAxisSize: MainAxisSize.min. Однако все виджеты упакованы, и все Alignments не будут иметь никакого эффекта.

Так что, вероятно, вы ищете, чтобы установить height из Row с максимальной высотой его children widget с. Этого можно добиться, заключив Row в IntrinsicHeight.

Card(
  child: IntrinsicHeight(
    child: Row(
      // ...
    ),
  ),
),
...