Skip to content

Switch

A toggle represents a physical switch that allows someone to choose between two mutually exclusive options.

For example, "On/Off", "Show/Hide".

Inherits: LayoutControl, AdaptiveControl

Properties

Events

Examples#

Live example

Basic Example#

import flet as ft


def main(page: ft.Page):
    def handle_button_click(e: ft.Event[ft.Button]):
        message.value = (
            f"Switch values are:  {c1.value}, {c2.value}, {c3.value}, {c4.value}."
        )
        page.update()

    page.add(
        c1 := ft.Switch(label="Unchecked switch", value=False),
        c2 := ft.Switch(label="Checked switch", value=True),
        c3 := ft.Switch(label="Disabled switch", disabled=True),
        c4 := ft.Switch(
            label="Switch with rendered label_position='left'",
            label_position=ft.LabelPosition.LEFT,
        ),
        ft.Button(content="Submit", on_click=handle_button_click),
        message := ft.Text(),
    )


ft.run(main)

basic

Handling change events#

import flet as ft


def main(page: ft.Page):
    def handle_switch_change(e: ft.Event[ft.Switch]):
        page.theme_mode = (
            ft.ThemeMode.DARK
            if page.theme_mode == ft.ThemeMode.LIGHT
            else ft.ThemeMode.LIGHT
        )
        e.control.label = (
            "Light ThemeMode"
            if page.theme_mode == ft.ThemeMode.LIGHT
            else "Dark ThemeMode"
        )
        page.update()

    page.theme_mode = ft.ThemeMode.LIGHT
    page.add(ft.Switch(label="Light ThemeMode", on_change=handle_switch_change))


ft.run(main)

handling-events

Properties#

active_color #

active_color: ColorValue | None = None

The color to use when this switch is on.

active_track_color #

active_track_color: ColorValue | None = None

The color to use on the track when this switch is on.

If track_color returns a non-none color in the ControlState.SELECTED state, it will be used instead of this color.

adaptive #

adaptive: bool | None = None

Whether an adaptive Switch should be created based on the target platform.

On iOS and macOS, a CupertinoSwitch is created, which has matching functionality and presentation as Switch, and the graphics as expected on iOS. On other platforms, a Material Switch is created.

Defaults to False. See the example of usage here.

autofocus #

autofocus: bool = False

Whether this switch will be selected as the initial focus. If there is more than one control on a page with autofocus set, then the first one added to the page will get focus.

focus_color #

focus_color: ColorValue | None = None

The color to use for the focus highlight for keyboard interactions.

hover_color #

hover_color: ColorValue | None = None

The color to be used when it is being hovered over by the mouse pointer.

inactive_thumb_color #

inactive_thumb_color: ColorValue | None = None

The color to use on the thumb when this switch is off.

Defaults to colors defined in the material design specification.

If thumb_color returns a non-none color in the ControlState.DEFAULT state, it will be used instead of this color.

inactive_track_color #

inactive_track_color: ColorValue | None = None

The color to use on the track when this switch is off.

Defaults to colors defined in the material design specification.

If track_color returns a non-none color in the ControlState.DEFAULT state, it will be used instead of this color.

label #

label: StrOrControl | None = None

The clickable label to display on the right of this switch.

label_position #

label_position: LabelPosition = RIGHT

The position of the label, if provided.

label_text_style #

label_text_style: TextStyle | None = None

The label's text style, when it is a string.

mouse_cursor #

mouse_cursor: MouseCursor | None = None

The cursor to be displayed when a mouse pointer enters or is hovering over this control.

overlay_color #

overlay_color: ControlStateValue[ColorValue] | None = None

The color for the switch's Material in various ControlState states.

The following states are supported: ControlState.PRESSED, ControlState.SELECTED, ControlState.HOVERED, ControlState.FOCUSED and ControlState.DEFAULT.

padding #

padding: PaddingValue | None = None

The amount of space to surround the child inside the bounds of the Switch.

Defaults to horizontal padding of 4 pixels. If Theme.use_material3 is false, then there is no padding by default.

splash_radius #

splash_radius: Number | None = None

The radius of the splash effect when the switch is pressed.

Raises:

thumb_color #

thumb_color: ControlStateValue[ColorValue] | None = None

The color of this switch's thumb in various ControlState states.

The following states are supported: ControlState.SELECTED, ControlState.HOVERED, ControlState.DISABLED, ControlState.FOCUSED and ControlState.DEFAULT (fallback).

thumb_icon #

thumb_icon: ControlStateValue[IconData] | None = None

The icon of this Switch's thumb in various ControlState states.

The following states are supported: ControlState.SELECTED, ControlState.HOVERED, ControlState.DISABLED, ControlState.FOCUSED and ControlState.DEFAULT (fallback).

track_color #

track_color: ControlStateValue[ColorValue] | None = None

The color of this switch's track in various ControlState states.

The following states are supported: ControlState.SELECTED, ControlState.HOVERED, ControlState.DISABLED, ControlState.FOCUSED and ControlState.DEFAULT (fallback).

track_outline_color #

track_outline_color: (
    ControlStateValue[ColorValue] | None
) = None

The outline color of this switch's track in various ControlState states.

The following states are supported: ControlState.SELECTED, ControlState.HOVERED, ControlState.DISABLED, ControlState.FOCUSED and ControlState.DEFAULT (fallback).

track_outline_width #

track_outline_width: (
    ControlStateValue[Number | None] | None
) = None

The outline width of this switch's track in all or specific ControlState states.

The following states are supported: ControlState.SELECTED, ControlState.HOVERED, ControlState.DISABLED, ControlState.FOCUSED and ControlState.DEFAULT (fallback).

value #

value: bool = False

Current value of this switch.

Events#

on_blur #

on_blur: ControlEventHandler[Switch] | None = None

Called when the control has lost focus.

on_change #

on_change: ControlEventHandler[Switch] | None = None

Called when the state of the Switch is changed.

on_focus #

on_focus: ControlEventHandler[Switch] | None = None

Called when the control has received focus.