数量ステッパー(+−) Quantity Stepper
「−」と「+」のボタンで数を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