どうも、ちょげ(@chogetarou)です。
ListView.builderでヘッダーを表示する方法を紹介します。
方法

固定しない
固定しないヘッダーを表示する場合には、最初のインデックスでヘッダーを表示するようにします。
具体的には、「if文」で条件分岐して実装します。
ListView.builder(
itemCount: /*count*/,
itemBuilder: (context, index) {
if (index == 0) {
return /*Header*/;
}
return /*Item*/;
},
)
固定する
ヘッダーを固定して表示する場合は、Columnを使います。
ヘッダーをColumnのchildrenで最初に指定し、その後にListViewを指定します。
Column(
children: [
/*ヘッダー*/,
Expanded(
child: ListView.builder(
itemCount: /*count*/,
itemBuilder: (context, index) {
return /*Widget*/;
},
),
),
],
),
ポイントは、ListView.builderをExpandedの「child」に指定する点です。
こうしないと表示されません。
まとめ
ListView.builderでヘッダーを固定するにはColumnウェジェット、固定しないのならばif文で表示します。
コメント