반응형
질문
저는 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(),
// ...
],
),
),
],
);
답변
ListView
의 shrink
속성을 true
로 설정하면 공간에 맞게 크기가 조정되며 확장되지 않습니다.
예시:
ListView(
shrinkWrap: true, // 이 속성만 설정하면 됩니다
padding: const EdgeInsets.all(8.0),
children: listItems.toList(),
),
반응형
댓글