【Flutter 2.0】iOSのUIStepperのようなWidgetを実装する

はじめに

こんにちは。FlutterでUIStepperのような部品を利用したくなりましたが、
FlutterでいうStepperとは、アプリ画面内の操作説明などを段階的に表示するUI部品の事のようで、iOSのボタンを押して数字を上げ下げする部品とは違うようでした。
「Cupertino Stepper」で検索してもそれらしいものが無かったので作成してみました。
参考になれば嬉しいです。

Stepper

iOS

アプリ内の設定値などを「+」と「-」ボタンを押して数字を増やす、減らすUI部品

この記事で作成するUIは、こちらになります。
参考: https://developer.apple.com/documentation/swiftui/stepper

Flutter

アプリ内の説明などウォークスルー的に利用されるUI部品
参考: https://api.flutter.dev/flutter/material/Stepper-class.html

カスタム作成したもの

押し心地など、iOSのネイティブと比較すると若干の相違はありますが、デザイン等は寄せてみました。

ソースコード

使い方

普段Widgetを差し込んでいる好きな場所に対して、以下のように記述します。
関数の引数名などは、ご自由に変更してください。

実装について

ElevatedButtonの中にIconを設置するとボタンのマージンが設定されてしまい、
うまく中央に揃ってくれないことから、StackでIconとElevatedButtonを重ねることにしました。
IgnorePointer を利用することで、Stackで重ねたボタンにちゃんとアクションイベントが行くようになり、ボタンの反応が悪くなるのを防いでいます。
iOS標準UIStepperのサイズは横幅: 94, 高さ: 32だったので、デフォルトのサイズとしています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です