[Flutter]ListView.builderをColumn内で使えるようにするには?

Flutter

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

ListView.builderをColumn内で使えるようにする方法を紹介します。

スポンサーリンク

方法

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

ListView.builderをColumn内で使えるようにする方法は2つあります。

Container

1つは、Containerウェジェットを使う方法です。

ListView.builderをContainerの「child」に指定します。

そして、Containerの引数「height」で高さを指定します。

body: Column(
  children: [
    Container(
      height: 500,
      child: ListView.builder(
        ・・・
      ),
    ),
  ],
),

SingleChildScrollView

プログラマー, プログラミング, コード, 仕事, コンピューター

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

まずCulumnを「SingleChildScrollView」の「child」に指定します。

SingleChildScrollView(
  child: Column(
    children: [
      ListView.builder(
        ・・・
      ),
    ],
  ),
),

そして、ListView.builderの引数「shrinkWrap」に「true」、引数「physics」に「NeverScrollableScrollPhysics()」を指定します。

SingleChildScrollView(
  child: Column(
    children: [
      ListView.builder(
        physics: NeverScrollableScrollPhysics(),
        shrinkWrap: true,
        itemCount: /*count*/,
        itemBuilder: (context, index) {
          return /*Widget*/;
        },
      ),
    ],
  ),
),

これでColumn内でListView.builderが使えるようになります。

以下は、使用例になります。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Column(
          children: [
            ListView.builder(
              physics: NeverScrollableScrollPhysics(),
              shrinkWrap: true,
              itemCount: 20,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text('$index'),
                );
              },
            ),
          ],
        ),
      ),
    );
  }

まとめ

ListView.builderをColumn内で使えるようにする方法は、次の2つです。

  • Containerでラップし、Containerの高さを設定する方法
  • SingleChildScrollViewでラップし、builderの引数に特定の設定をする方法

コメント

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