CupertinoSwitch class
An iOS-style switch.
Used to toggle the on/off state of a single setting.
Learn more about CupertinoSwitch on the Flutter YouTube channel.
The switch itself does not maintain its toggle state. Instead, when the toggle state of the switch changes, the widget calls the onChanged callback. Most widgets that use a switch will listen for the onChanged callback and rebuild the switch with a new value to update the visual appearance of the switch.
This example shows a toggleable CupertinoSwitch. When the thumb slides to the other side of the track, the switch is toggled between on/off.
To see it in action, copy and run this code snippet on DartPad.
import 'package:cupertino_ui/cupertino_ui.dart';
/// Flutter code sample for [CupertinoSwitch].
void main() => runApp(const CupertinoSwitchApp());
class CupertinoSwitchApp extends StatelessWidget {
const CupertinoSwitchApp({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
theme: CupertinoThemeData(brightness: .light),
home: CupertinoSwitchExample(),
);
}
}
class CupertinoSwitchExample extends StatefulWidget {
const CupertinoSwitchExample({super.key});
@override
State<CupertinoSwitchExample> createState() => _CupertinoSwitchExampleState();
}
class _CupertinoSwitchExampleState extends State<CupertinoSwitchExample> {
bool switchValue = true;
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(
middle: Text('CupertinoSwitch Sample'),
),
child: Center(
child: CupertinoSwitch(
// This bool value toggles the switch.
value: switchValue,
activeTrackColor: CupertinoColors.activeBlue,
onChanged: (bool value) {
// This is called when the user toggles the switch.
setState(() {
switchValue = value;
});
},
),
),
);
}
}
This sample shows how to use a CupertinoSwitch in a CupertinoListTile. The MergeSemantics is used to turn the entire CupertinoListTile into a single item for accessibility tools.
MergeSemantics(
child: CupertinoListTile(
title: const Text('Lights'),
trailing: CupertinoSwitch(
value: _lights,
onChanged: (bool value) { setState(() { _lights = value; }); },
),
onTap: () { setState(() { _lights = !_lights; }); },
),
)
See also:
- Switch, the Material Design equivalent.
- developer.apple.com/design/human-interface-guidelines/toggles/
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- CupertinoSwitch
Constructors
-
CupertinoSwitch({Key? key, required bool value, required ValueChanged<
bool> ? onChanged, @Deprecated('Use activeTrackColor instead. ' 'This feature was deprecated after v3.24.0-0.2.pre.') Color? activeColor, @Deprecated('Use inactiveTrackColor instead. ' 'This feature was deprecated after v3.24.0-0.2.pre.') Color? trackColor, Color? activeTrackColor, Color? inactiveTrackColor, Color? thumbColor, Color? inactiveThumbColor, bool? applyTheme, Color? focusColor, Color? onLabelColor, Color? offLabelColor, ImageProvider<Object> ? activeThumbImage, ImageErrorListener? onActiveThumbImageError, ImageProvider<Object> ? inactiveThumbImage, ImageErrorListener? onInactiveThumbImageError, WidgetStateProperty<Color?> ? trackOutlineColor, WidgetStateProperty<double?> ? trackOutlineWidth, WidgetStateProperty<Icon?> ? thumbIcon, WidgetStateProperty<MouseCursor> ? mouseCursor, FocusNode? focusNode, ValueChanged<bool> ? onFocusChange, bool autofocus = false, DragStartBehavior dragStartBehavior = DragStartBehavior.start}) -
Creates an iOS-style switch.
const
Properties
- activeColor → Color?
-
The color to use for the track when the switch is on.
no setter
-
activeThumbImage
→ ImageProvider<
Object> ? -
An image to use on the thumb of this switch when the switch is on.
final
- activeTrackColor → Color?
-
The color to use for the track when the switch is on.
final
- applyTheme → bool?
-
Whether to apply the ambient CupertinoThemeData.
final
- autofocus → bool
-
True if this widget will be selected as the initial focus when no other
node in its scope is currently focused.
final
- dragStartBehavior → DragStartBehavior
-
Determines the way that drag start behavior is handled.
final
- focusColor → Color?
-
The color to use for the focus highlight for keyboard interactions.
final
- focusNode → FocusNode?
-
An optional focus node to use as the focus node for this widget.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- inactiveThumbColor → Color?
-
The color to use on the thumb when the switch is off.
final
-
inactiveThumbImage
→ ImageProvider<
Object> ? -
An image to use on the thumb of this switch when the switch is off.
final
- inactiveTrackColor → Color?
-
The color to use for the track when the switch is off.
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
-
mouseCursor
→ WidgetStateProperty<
MouseCursor> ? -
The cursor for a mouse pointer when it enters or is hovering over the
widget.
final
- offLabelColor → Color?
-
The color to use for the accessibility label when the switch is off.
final
- onActiveThumbImageError → ImageErrorListener?
-
An optional error callback for errors emitted when loading
activeThumbImage.
final
-
onChanged
→ ValueChanged<
bool> ? -
Called when the user toggles the switch on or off.
final
-
onFocusChange
→ ValueChanged<
bool> ? -
Handler called when the focus changes.
final
- onInactiveThumbImageError → ImageErrorListener?
-
An optional error callback for errors emitted when loading
inactiveThumbImage.
final
- onLabelColor → Color?
-
The color to use for the accessibility label when the switch is on.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- thumbColor → Color?
-
The color to use for the thumb when the switch is on.
final
-
thumbIcon
→ WidgetStateProperty<
Icon?> ? -
The icon to use on the thumb of this switch.
final
- trackColor → Color?
-
The color to use for the track when the switch is off.
no setter
-
trackOutlineColor
→ WidgetStateProperty<
Color?> ? -
The outline color of this CupertinoSwitch's track.
final
-
trackOutlineWidth
→ WidgetStateProperty<
double?> ? -
The outline width of this CupertinoSwitch's track.
final
- value → bool
-
Whether this switch is on or off.
final
Methods
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< CupertinoSwitch> -
Creates the mutable state for this widget at a given location in the tree.
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited