Flutter

Flutter GridView.builderの使い方|カードを格子状に並べる基本

FlutterのGridView.builderを初心者向けに解説します。gridDelegate、crossAxisCount、itemBuilderを使ってカードを格子状に表示する方法を整理します。

この記事の目次
  1. この記事の結論
  2. 最小コード
  3. 余白を指定する
  4. 縦横比を調整する
  5. 実装後に確認すること
  6. よくあるつまずき
  7. 次に読む記事
  8. まとめ

GridView.builderは、格子状の一覧を効率よく作るWidgetです。

この記事の結論

画像一覧、商品一覧、メニューカードなど、同じ形のカードを並べる時に向いています。

最小コード

crossAxisCountで列数を指定します。

GridView.builder(
  itemCount: 20,
  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 2,
  ),
  itemBuilder: (context, index) {
    return Card(child: Center(child: Text("$index")));
  },
)

余白を指定する

crossAxisSpacingやmainAxisSpacingを使います。

gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  crossAxisCount: 2,
  crossAxisSpacing: 12,
  mainAxisSpacing: 12,
)

縦横比を調整する

childAspectRatioでカードの比率を変えます。

gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  crossAxisCount: 2,
  childAspectRatio: 3 / 2,
)

実装後に確認すること

  • 画面上で余白や入力が意図通りか確認したか
  • 小さい画面で崩れないか確認したか
  • 状態管理や画面遷移の責務を混ぜすぎていないか
  • 関連するWidgetとの使い分けを説明できるか

よくあるつまずき

  • 便利なWidgetに役割を詰め込みすぎる
  • 固定サイズや固定余白だけで作る
  • 入力値の破棄やバリデーションを忘れる
  • ListViewやGridViewをColumn内で高さ指定なしに置く

次に読む記事

まとめ

Flutter GridView builderはFlutter UIを作るうえでよく使う基本です。最小コードで動きを確認し、関連Widgetと使い分けながら画面を組み立てましょう。