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

スイッチ Switch

押すとつまみが横へ滑って、オンとオフが切り替わる。設定画面で「すぐに効く」切り替えに使う。

別名
トグルスイッチオンオフスイッチボタン切り替えスイッチ設定のスイッチToggle SwitchSwitchListTileCupertinoSwitch
動き
つまみが横へ滑る色がつく
作り方
標準ウィジェット Flutter に入っているものだけで作れます

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

別タブで大きく開く ↗

どんなもの?

Switch に value と onChanged を渡すだけで使えます。押した瞬間に設定が効くもの(通知・ダークモードなど)に向きます。

thumbIcon でつまみの中にアイコン(✓ や ×)を出すと、色が見分けにくい人にもオンオフが伝わります。

設定画面の1行は SwitchListTile にすると、文字を含めた行全体が押せるようになります。

iOS 風にしたいときは CupertinoSwitch、OS に合わせたいときは Switch.adaptive です。

「保存」ボタンを押すまで効かない設定には、スイッチではなくチェックボックスが向きます。

こんなときに

  • 押した瞬間に効く、オンとオフの2択の設定

避けたい場面

  • 「保存」を押してから反映される項目(チェックボックスにする)
  • 2択でも、どちらがオンか分かりにくいもの(「昇順 / 降順」はセグメントボタンにする)

最小コード

Switch(
  value: wifi,
  thumbIcon: WidgetStateProperty.resolveWith((states) =>
      states.contains(WidgetState.selected)
          ? const Icon(Icons.check)
          : const Icon(Icons.close)),
  onChanged: (v) => setState(() => wifi = v),
)

// 行全体が押せる
SwitchListTile(
  title: const Text('通知'),
  value: notify,
  onChanged: (v) => setState(() => notify = v),
)

// iOS 風
CupertinoSwitch(value: dark, onChanged: (v) => setState(() => dark = v))

使うウィジェット

SwitchSwitch.adaptiveSwitchListTileCupertinoSwitch

パッケージ: animated_toggle_switch ↗

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

触ってみる ↗
ボタン トグルボタンToggle Buttons

太字・斜体・下線のように、つながったアイコンボタンを押すたびにオンとオフが切り替わる。

押すたびオン・オフ
触ってみる ↗
ボタン セグメントボタンSegmented Button

2〜5個のボタンが1本につながっていて、選んだものだけが塗られる。「日・週・月」の切り替えなどに使う。

つながったボタン