本エントリではIconButton
の使用方法についてまとめる。
IconButtonとは
IconButton
はアイコンにタップ機能を組み合わせたボタンを作成するウィジェット。
画像はIcon(Icons.person)
をアイコンに設定している。
必須のプロパティ
icon
: 表示するアイコンを指定onPressed
: アイコンがタップされた際に実行するイベントハンドラ
onPressedがnullの場合の表示
イベントハンドラが設定されていない場合、アイコンがグレースケールに表示されてタップができなくなる。
次にIconButton
の詳しい使用方法について説明していく。
デザイン
IconButton
のデザイン設定について説明する。
サイズ
iconSize
プロパティにてサイズを指定できる。
ちなみにデフォルトのサイズは24。
画像のようにアイコンのサイズを指定できる。
アイコンの色
アイコンの色はcolor
プロパティで設定できる。
タップ時の背景色
タップ時のアイコンの背景色はhighlightColor
プロパティで設定できる。
タップ中の背景色
タップ中にアイコンの背景にじわっと広がる範囲の色はsplashColor
プロパティで設定できる。
タップ時の処理
IconButton
をタップした際の処理の設定について説明する。
通常タップ
onPressed
にイベントハンドラとしてコールバック関数を渡せばよい。
以下の例ではIconButton
を押すたびに_counter
の値を1ずつインクリメントしている。
長押しタップ
IconButton
にはonLongPress
のようなプロパティが存在しない。
そのためGestureDetector
などでラップしてonLongPress
プロパティにイベントハンドラを設定すれば良い。
以下の例では説明のために通常タップと長押しで以下のように異なるイベントハンドラを呼んでいる。
- 通常タップ:
IconButton
のonPressed
に設定されたイベントハンドラが反応し、_onPressedCounter
が1ずつインクリメント - 長押しタップ:
GestureDetector````の
onLongPressに設定されたイベントハンドラが反応し
onLongPress```が1ずつインクリメント
下のgif画像でもタップの仕方が異なると、異なる変数がインクリメントされていることがわかる。
その他
アイコンの回転
IconButton
に限らず、ウィジェットを回転させるには専用のウィジェットでラップする。
今回はシンプルにCounter
でラップして回転させる方法を説明する。
Container
ウィジェットを回転させるにはtransform
プロパティを設定すれば良い。
以下の例では_rotationDegree
に回転したい角度(時計回り)を入れることでContainer
ウィジェットを回転させている。
15度ずつ_rotaitonDegree
に入れる値を増やすと以下の画像の様になる。
ちなみにtransformAlignment
プロパティにAlignment.center
を渡している理由は、回転軸をIconButton
の中央に設定するため。
詳しくは以下リンクを参照のこと。
またウィジェットを回転させる方法については以下のエントリでまとめているので、適宜参考にしてほしい。