ElevatedButtonでよくあるボタンをつくる


前提:さよならRaisedButton

Flutterでボタンを実装する上で大変お世話になったのがRaisedButtonというWidgetでした。・・・が、以下にもある通り廃止されてしまいました。
代わりに使うように推奨されているのがElevatedButtonです。
https://api.flutter.dev/flutter/material/RaisedButton-class.html

This class is obsolete, please use ElevatedButton instead.

ElevatedButtonでよくあるボタンをつくる

というわけで、ElevatedButtonでボタンを作っていきたいと思います。
RaisedButtonと比べると追加するプロパティがやや増えますが、パターンを覚えてしまえば怖くない。

普通のボタン

            ElevatedButton(
              onPressed: () {},
              child: Text(
                "1.Normal Button",
              ),
            ),

背景が黒色のボタン

            ElevatedButton(
              onPressed: () {},
              child: Text(
                "2.BackGround Button",
                style: TextStyle(
                  color: Colors.yellow,
                  fontSize: 30,
                ),
              ),
              style: ElevatedButton.styleFrom(
                primary: Colors.black, //ボタンの背景色
              ),
            ),

styleプロパティを使います。

押したときの背景が黒色のボタン

            // 3.押したときの背景が黒色のボタン
            ElevatedButton(
              onPressed: () {},
              child: Text(
                "3.onPressed Color Button",
                style: TextStyle(
                  color: Colors.white,
                ),
              ),
              style: ElevatedButton.styleFrom(
                onPrimary: Colors.black, //押したときの色!!
              ),
            ),

先ほどと同様にstyleを使います。
primaryが背景色、onPrimaryが押したときの背景色になります。primaryと名前が似てるので注意。

ボタン非活性化

            ElevatedButton(
              onPressed: null, // onPressedをnullにする
              child: Text(
                "4.Untouchable button",
              ),
            ),

onPressedをnullにするだけで実現できます。

大きさを変える

            SizedBox(
              // 5.SizedBoxで囲んでwidth/heightをつける
              width: 330,
              height: 100,
              child: ElevatedButton(
                onPressed: () {},
                child: Text(
                  "5.330 x 100 Size Button",
                ),
                style: ButtonStyle(),
              ),
            ),

他にもやり方ありますが、SizedBoxでElevatedButtonを包んでみました。

枠線をつける

            ElevatedButton(
              onPressed: () {},
              child: Text(
                "6.Button",
              ),
              style: ElevatedButton.styleFrom(
                side: BorderSide(
                  color: Colors.black, //枠線!
                  width: 3, //枠線!
                ),
              ),

背景を変えた時と同じstyleプロパティを使います。
sideにBorderSideを書いてあげれば、枠線の色や太さを指定できます。