본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터: 수평 리스트 뷰에서의 최소 높이, Flutter: Minimum height on horizontal list view

by 베타코드 2023. 6. 14.
반응형

질문


저는 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(),
      // ...
    ],
  ),
);

저는 RowSingleChildScrollView에 중첩하고 ColumnmainAxisSize: MainAxisSize.min을 설정하여 “해결책”을 해킹 할 수있었습니다. 그러나 이 방법은 해결책 같지 않습니다:

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

답변


ListViewshrink 속성을 true로 설정하면 공간에 맞게 크기가 조정되며 확장되지 않습니다.

예시:

ListView(
        shrinkWrap: true, // 이 속성만 설정하면 됩니다
        padding: const EdgeInsets.all(8.0),
        children: listItems.toList(),
      ),
반응형

댓글