Home Articles

颤动:水平列表视图上的最小高度

Asked
Viewed 1429 times
5

我正在尝试在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(),
      // ...
    ],
  ),
);

我能够通过 SingleChildScrollViewSingleChildScrollView 嵌套在 Column 中,并将_1836010_与 mainAxisSize: MainAxisSize.min 嵌套在一起来解决“解决方案” . 但是,对我来说,这不是一个解决方案:

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

1 Answer

  • 2

    只需将 ListViewshrink 属性设置为 true ,它将适合空间而不是扩展 .

    例:

    ListView(
            shrinkWrap: true, //just set this property
            padding: const EdgeInsets.all(8.0),
            children: listItems.toList(),
          ),
    

Related