Флаттер: минимальная высота при горизонтальном просмотре списка - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать список горизонтальной прокрутки во Flutter, и я хочу, чтобы этот список занимал только необходимую высоту, основываясь на его дочерних элементах. По замыслу «ListView пытается расширяться, чтобы соответствовать пространству, доступному в его поперечном направлении» (из Flutter docs ), что я также замечаю в том, что оно занимает всю высоту области просмотра, но Есть ли способ заставить его не делать этого? В идеале что-то похожее на это (что, очевидно, не работает):

new ListView(
  scrollDirection: Axis.horizontal,
  crossAxisSize: CrossAxisSize.min,
  children: <Widget>[
    new ListItem(),
    new ListItem(),
    // ...
  ],
);

Я понимаю, что один из способов сделать это - обернуть ListView в Container с фиксированной высотой. Однако я не обязательно знаю высоту предметов:

new Container(
  height: 97.0,
  child: new ListView(
    scrollDirection: Axis.horizontal,
    children: <Widget>[
      new ListItem(),
      new ListItem(),
      // ...
    ],
  ),
);

Мне удалось взломать «решение», вложив Row в SingleChildScrollView в Column и mainAxisSize: MainAxisSize.min. Тем не менее, это не похоже на решение, для меня:

new Column(
  mainAxisSize: MainAxisSize.min,
  children: <Widget>[
    new SingleChildScrollView(
      scrollDirection: Axis.horizontal,
      child: new Row(
        children: <Widget>[
          new ListItem(),
          new ListItem(),
          // ...
        ],
      ),
    ),
  ],
);

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Используйте ConstrainedBox для установки minHeight и maxHeight

ConstrainedBox(
  constraints: new BoxConstraints(
    minHeight: 35.0,
    maxHeight: 160.0,
  ),

  child: new ListView(
    shrinkWrap: true,
    children: <Widget>[
      new ListItem(),
      new ListItem(),
    ],

  ),
)
0 голосов
/ 02 сентября 2018

Просто установите shrink свойство ListView на true, и оно будет соответствовать пространству, а не расширению.

Пример:

ListView(
        shrinkWrap: true, //just set this property
        padding: const EdgeInsets.all(8.0),
        children: listItems.toList(),
      ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...