🍛
[Flutter] 横向きのListViewと縦向きのListViewを組み合わせて使う
できたもの
ソースコード
やり方
ListView
を縦向きに複数個並べる
横向きの横向きのListView
を垂直方向に複数個並べたい時は、ListView
(またはColumn
)のような要素を縦に並べる要素にListView(scrollDirection: Axis.horizontal)
を複数個配置する。
その際、横向きのListView
を高さを制限するための要素(Container
,SizedBox
などのheight
を指定する)でラップしてあげないとエラーが出るため注意が必要。
参考
// Error: Horizontal viewport was given unbounded height.
// ColumnのmainAxisSizeを指定しても同じ
body: Column( // ← ListViewの場合も同じエラーが出る
children: [
ListView(
scrollDirection: Axis.horizontal,
children: [
Text('Hello, '),
Text('World!'),
],
),
],
),
ListView
と一緒に縦向きのListView
も並べる
横向きの縦向きのListView
に以下のプロパティを指定する。
ListView(
children: _children,
shrinkWrap: true, // <= 追加
physics: ClampingScrollPhysics(), // <= 追加
),
参考記事
ListView
のネストについて
shrinkWrapとは何か
ClampingScrollPhysicsとは
Discussion