[Flutter]リストビュー(ListView)をColumnで使えるようにするには?

Flutter

どうも、ちょげ(@chogetarou)です。

リストビューをColumnウェジェット内で使えるようにする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リストビューをColumnウェジェット内で使えるようにする方法は2つあります。

shrinkWrap

1つは、ListViewの引数「shrinkWrap」に「true」を指定する方法です。

ListView(
   shrinkWrap : true,
   children : [
       ・・・・
   ]
)

Expanded

もう1つは、Expandedを使う方法です。

ListViewを「Expanded」の引数「child」に指定します。

Expanded(
  child: ListView(
      children : [
          ・・・
      ]
  ),
),

なぜColumnでは使えない?

女性, 疑問符, 人, 決断, 思慮深い, 疑問符, 疑問符, 疑問符, 疑問符

そもそも、ListViewはなぜColumnでは使えないのでしょうか。

理由は、どちらのウェジェットも表示するスペースを最大限まで取得しようとするからです。

ListViewが最大限まで表示するスペースを取得しようとして、Columnもそれに応じて最大限まで表示するスペースを取得しようとし、更にListViewが最大限まで表示するスペースを取得しようとして・・・・というように永遠に続くわけです。

そうなると、表示するスペースだけが大きくなり、肝心の中身が表示されなくなります。

これを防ぐのが「shrinkWrap」と「Expanded」です。

「shrinkWrap」に「true」を指定すると、ListViewは必要最低限しか表示するスペースを取得しません。

Expandedの場合も同じです。

まとめ

ListViewをColumn内で使うには、ListViewを必要最低限の表示スペースだけ取得するようにする。

そのために、「shrinkWrap」もしくは「Expanded」を使う。

コメント

タイトルとURLをコピーしました