個人開発者が勉強がてらまとめているだけのサイトです

数量ステッパー(+−) Quantity Stepper

「−」と「+」のボタンで数を1つずつ増減する。上限・下限に来るとボタンが押せなくなる。

別名
数量ボタンプラスマイナスボタン個数の増減カウンター個数選択Stepper InputQuantity SelectorNumber Input
動き
+で1つ増える数字が入れ替わる上限・下限でボタンが薄くなる
作り方
自作 標準ウィジェットの組み合わせで自分で作ります

本物の Flutter ウィジェットが動きます(初回は数秒かかります)

別タブで大きく開く ↗

どんなもの?

カートの個数や人数など、小さな整数を入れてもらう形です。キーボードを出さずに済みます。

「−」「数字」「+」を Row に並べ、上限・下限ではボタンの onPressed を null にして押せない見た目にします。

数字を AnimatedSwitcher で切り替えると、増えたときは下から、減ったときは上から入れ替わる動きを付けられます。

0 にしたら「削除」ボタンに変える(ゴミ箱アイコン)のも、カートでよく見る形です。

名前が似ていますが、手順を示す Stepper ウィジェットとは別物です。

押しっぱなしで連続して増やすには「押しっぱなしで連続」の項目を組み合わせます。

こんなときに

  • 個数・人数・泊数など、1〜10程度の小さな整数

避けたい場面

  • 大きく変わる数(直接入力やスライダーにする)

最小コード

Row(mainAxisSize: MainAxisSize.min, children: [
  IconButton.outlined(
    icon: const Icon(Icons.remove),
    onPressed: count > 1 ? () => setState(() => count--) : null,
  ),
  AnimatedSwitcher(
    duration: const Duration(milliseconds: 200),
    child: Text('$count', key: ValueKey(count)),
  ),
  IconButton.outlined(
    icon: const Icon(Icons.add),
    onPressed: count < 9 ? () => setState(() => count++) : null,
  ),
])

使うウィジェット

IconButtonAnimatedSwitcherSlideTransition

似ているもの・一緒に見たいもの

触ってみる ↗
入力・フォーム スライダーSlider

つまみを横へドラッグして値を決める。目盛りを付けると決まった刻みに吸い付き、動かしている間だけ上に値が出る。

つまみを横へドラッグ