[Flutter]複数のCardを横スクロールで表示するには?

Flutter

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

複数のCardを横スクロールで表示する方法を紹介します。

スポンサーリンク

方法

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

複数のCardを横スクロールで表示する方法は2つあります。

ListView

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

まず、ListViewの引数「children」に複数のCardのリストを指定します。

そして、ListViewの引数「scrollDirection」に「Axis.horizontal」を指定します。

ListView(
  scrollDirection: Axis.horizontal,
  children: [
    Card(),
    Card(),
    Card(),
    Card(),
    ・・・
  ],
),

以下は、使用例です。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SizedBox(
          height: 200,
          child: ListView(
            scrollDirection: Axis.horizontal,
            children: [
              Card(
                child: Container(
                  width: 200,
                ),
                color: Colors.blue,
              ),
              Card(
                child: Container(
                  width: 200,
                ),
                color: Colors.green,
              ),
              Card(
                child: Container(
                  width: 200,
                ),
                color: Colors.yellow,
              ),
              Card(
                child: Container(
                  width: 200,
                ),
                color: Colors.pink,
              ),
            ],
            shrinkWrap: true,
          ),
        ),
      ),
    );
  }

もし、ListViewを動的に作る場合は、ListView.builderを使います。

ListView.builderになってもCardの指定の仕方が変わるだけで、引数「scrollDirection」の指定は同じです。

PageView

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

具体的には、PageViewの引数「children」に複数のCardのリストを設定します。

PageView(
  children: [
    Card(),
    Card(),
    Card(),
    Card(),
    ・・・
  ],
),

以下は、使用例です。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SizedBox(
          height: 200,
          child: PageView(
            controller: PageController(viewportFraction: 0.7),
            children: [
              Card(color: Colors.blue),
              Card(color: Colors.green),
              Card(color: Colors.yellow),
              Card(color: Colors.pink),
            ],
          ),
        ),
      ),
    );
  }

PageViewを動的に作りたい場合は、PageView.builderを使います。

まとめ

複数のCardを横スクロールで表示するには、ListViewもしくはPageViewを使います。

コメント

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