Checkbox class
A check box is used to select or deselect action items.
It can be used for a single item or for a list of multiple items that a user
can choose from. The control has three selection states: unselected (false),
selected (true), and indeterminate (null). Use the indeterminate state
when a collection of sub-choices have both unselected and selected states.

{@tool snippet} This example shows a basic checkbox:
bool isChecked = false;
Checkbox(
checked: isChecked,
onChanged: (value) => setState(() => isChecked = value ?? false),
)
{@end-tool}
{@tool snippet} This example shows a checkbox with a label:
Checkbox(
checked: isAccepted,
content: Text('I accept the terms and conditions'),
onChanged: (value) => setState(() => isAccepted = value ?? false),
)
{@end-tool}
{@tool snippet} This example shows a three-state checkbox used to represent a group:
// null = indeterminate (some children checked)
// true = all children checked
// false = no children checked
bool? parentChecked;
Checkbox(
checked: parentChecked,
content: Text('Select all'),
onChanged: (value) {
setState(() {
// When clicked, toggle between checked and unchecked
parentChecked = value == true ? true : false;
});
},
)
{@end-tool}
Checkbox vs other controls
Use a checkbox when:
- Users can select zero, one, or multiple items from a list
- Items in the list are independent (selecting one doesn't affect others)
- You want to show the current selection state at a glance
Consider using:
- RadioButton when users must select exactly one option
- ToggleSwitch for binary on/off settings that take effect immediately
- ToggleButton for a button that maintains a toggled state
See also:
- ToggleSwitch, which represents a physical switch that allows users to turn things on or off immediately
- RadioButton, lets users select one option from a collection of two or more mutually exclusive, visible options
- ToggleButton, a button that can be toggled on or off
- learn.microsoft.com/en-us/windows/apps/design/controls/checkbox
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- Checkbox
Constructors
-
Checkbox({required bool? checked, required ValueChanged<
bool?> ? onChanged, Key? key, CheckboxThemeData? style, Widget? content, String? semanticLabel, FocusNode? focusNode, bool autofocus = false}) -
Creates a checkbox.
const
Properties
- autofocus → bool
-
True if this widget will be selected as the initial focus when no other
node in its scope is currently focused.
final
- checked → bool?
-
Whether the checkbox is checked or not.
final
- content → Widget?
-
The content of the radio button.
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
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
-
onChanged
→ ValueChanged<
bool?> ? -
Called when the value of the Checkbox should change.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- semanticLabel → String?
-
Semantic label for the input.
final
- style → CheckboxThemeData?
-
The style applied to the checkbox. If non-null, it's mescled
with
FluentThemeData.checkboxThemeDatafinal
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
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